学习
千曲生
我是一个聪明的小伙子
展开
-
Kotlin研发第二弹——习惯用语
习惯用语习语创建DTOs(POJOs/POCOs)数据类函数默认参数过滤list字符串插值实例检查遍历map/list键值对使用ranges只读list只读map访问map懒属性(延迟加载)扩展函数创建单例模式如果不为空则…的简写如果不为空否则的简写如果生命为空执行某操作如果不为空执行某操作如果不空则映射(Map nullable value if not...原创 2019-05-29 19:42:04 · 216 阅读 · 0 评论 -
Kotlin研发第十六弹——接口
接口Kotlin 的接口与 Java 8 类似,既包含抽象方法的声明,也包含实现。与抽象类不同的是,接口无法保存状态。它可以有属性但必须声明为抽象或提供访问器实现。使用关键字 interface 来定义接口interface MyInterface { fun bar() fun foo() { // 可选的方法体 }}实现接口一个类或者对象可以实...原创 2019-05-30 09:51:32 · 157 阅读 · 0 评论 -
Kotlin研发第十七弹——其他
其他其他链接链接多重声明Ranges类型检查和自动转换This表达式灯饰运算符重载空安全异常注解反射动态类型多重声明多重声明例子:一个函数返回两个值例子:多重声明和Map多重声明有时候可以通过给对象插入多个成员函数做区别是很方便的,比如://多重声明data class Person(var name:String,var ag...原创 2019-05-30 09:51:38 · 684 阅读 · 0 评论 -
Kotlin研发第十八弹——类型检查和自动转换
类型检查和自动转换类型检查和转换is !is表达式智能转换**“不安全”的转换符和“安全”转换符 **类型检查和转换is !is表达式我们可以运行是通过上面两个操作符检查一个对象是都是某个特定类型//判断当前数据是否是某种类型fun judgeTypeTest(){ val num=2 if (num is Int){ println(n...原创 2019-05-30 09:51:45 · 162 阅读 · 0 评论 -
Kotlin研发第十九弹——等式
等式相等参照相等结构相等相等kotlin中有两种相等参照相等(指向相同的对象)结构相等参照相等参照相等是通过===操作符判断的(不等是!==)a===b,只有a,b指向同一个对象时判断才成立另外:你可以使用内联函数identityEquals()判断参照相等:???下面等式没法验证a.identityEquals(b)a identityEquals b结...原创 2019-05-30 09:51:52 · 124 阅读 · 0 评论 -
Kotlin研发第二十弹——运算符重载
运算符重载运算符重载转换一元运算符二元操作符函数命名的中缀调用运算符重载Kotlin允许我们事先一些我们自定义类型的运算符实现,这些运算符有固定的表示和固定的优先级。为实现这样的运算符,饿哦们提供了固定名字的数字函数和扩展函数。比如二元运算符的左值和一元运算符的参数类型转换一元运算符表达式转换+aa.pluns()-aa.minus...原创 2019-05-30 09:51:59 · 147 阅读 · 0 评论 -
Kotlin研发第二十一弹——空安全
空安全空安全可控类型和非空类型在条件中检查null安全掉还用Elvis操作符!!操作符安全转换空安全可空类型和非空类型Kotlin致力于消灭空引用:为了避免Java中的NullPointerException(NPE)Kotlin类型系统致力于消灭NullPointerException,唯一可以导致NPE异常的可能是:明确调用throw NullPointer...原创 2019-05-30 09:52:08 · 140 阅读 · 0 评论 -
Kotlin研发第二十二弹—— 异常
异常异常异常类try是一个表达式检查异常java互动异常异常类所有的异常类都是Exception的子类,每个异常都有个消息,栈踪迹和可选的原因使用throw表达式,抛出异常throw Exception("出错啦")使用try捕获异常try{}catch(e:Exception)finally{}有可能不止一个catch块,finally块可以省略val ...原创 2019-05-30 09:52:18 · 163 阅读 · 0 评论 -
Kotlin研发第二十三弹—— 注解
注解注解注解声明用法构造函数LambdasJava注解注解注解声明注解是一种将原数据附加到代码中的方法。声明注解需要在类前面使用annotation关键字://注解@Target(AnnotationTarget.EXPRESSION, AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarg...原创 2019-05-30 09:52:27 · 132 阅读 · 0 评论 -
稿 Kotlin研发第二十四弹—— 反射
反射反射类引用函数引用例子:函数组合属性引用与java反射调用构造函数引用反射反射是一系列语言和库的特性,允许在运行是获取你代码结构。Kotlin把函数和属性作为语言的头等类,而且反射他们和使用函数时编程或者响应式编程风格很像。类引用最基本的反射特性就是得到运行时的类引用。要获取引用并使之成为静态类可以使用字面类语法://类引用fun getTestClasse...原创 2019-05-30 09:52:38 · 158 阅读 · 0 评论 -
Kotlin研发第二十四弹—— 动态类型
动态类型动态类型动态类型作为静态类型的语言,kotlin仍然拥有与无类型或弱类型语言的调用,比如JavaScript。为了方便使用,Dynamic应运而生val dyn:dynamix=dynamic类型关闭了kotlin的类型检查:这样的类型可以分配任意变量或者在任意的地方作为参数传递任何值都可以分配为dynamic类型,或者作为参数传递给任何接受dynamic类型参数的函...原创 2019-05-30 09:52:51 · 645 阅读 · 0 评论 -
Kotlin研发第二十五弹—— 参考库
参考参考链接Kotlin标准库包Kotlin标准库Kotlin裱糊纸尿裤是一系列实现了常用的模式的函数和类型,可以用在集合、文字和文件上。包——各种依赖库包名信息kotlin核心函数和类型,在所有支持平台均可用kotlin.annotationkotlin注解的依赖库kotlin.browser访问操作浏览器的DOM的APIko...原创 2019-05-30 09:52:59 · 225 阅读 · 0 评论 -
Kotlin研发第十五弹——协程(Coroutines)
协程(Coroutines)阻塞和挂起挂起函数@RestrictsSuspension注解协程内部机制协程实验状态标准API底层API:kotlin。coroutineskotlin.coroutines中的生成器API其他高级API:kotlinx.coroutines协程协程:有些API需要长时间运行,并且需要调用者阻塞其他程序知道这些调用完成(比如网络IO、文...原创 2019-05-30 09:51:23 · 242 阅读 · 0 评论 -
Kotlin研发第十四弹——内联函数
内联函数1、内联函数使用高阶函数带来了响应的运行时麻烦:**每个函数都是一个对象,它捕获闭包,即这些变量可以在函数体内被访问,减少了内存:**毕竟内存的分配,虚拟调用的运行都会带来开销但是大多数开销都可以用**内联函数inline**避免内联函数具体的在之前讲到了,这边就不细讲,就单纯的写两个例子//内联函数inline fun <T> addStringTest(test...原创 2019-05-30 09:51:17 · 225 阅读 · 0 评论 -
Kotlin研发第三弹——编码风格
编码风格编码规范命名风格冒号lambdas类声明格式Unit函数vs属性编码风格命名风格—使用骆驼命名法(在命名中避免下划线)—类型名称首字母大写—方法和属性首字母小写—缩进用四个空格—public 方法要写说明文档,这样它就可以出现在 Kotllin Doc 中冒号在冒号区分类型和父类型中要有空格,在实例和类型中间是没有空格的//对于泛型信息的泛型...原创 2019-05-29 19:55:19 · 155 阅读 · 0 评论 -
Kotlin研发第四弹——基础类型
基础类型在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数与属性。 一些类型可以有特殊的内部表示——例如,数字、字符以及布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述 Kotlin 中使用的基本类型:数字、字符、布尔值、数组与字符串。数字Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同...原创 2019-05-29 20:03:09 · 820 阅读 · 0 评论 -
Kotlin研发第五弹——控制流:if、when、for、while
控制流:if、when、for、whileIf 表达式在 Kotlin 中,if是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if 就能胜任这个角色。// 传统用法var max = aif (a < b) max = b// With elsevar max: Intif (a > b) { max = a...原创 2019-05-29 20:06:05 · 165 阅读 · 0 评论 -
Kotlin研发第六弹——类与继承
类类与继承类Kotlin 中使用关键字 class 声明类class Invoice { ... }类声明由类名、类头(指定其类型参数、主构造函数等)以及由花括号包围的类体构成。类头与类体都是可选的; 如果一个类没有类体,可以省略花括号。class Empty构造函数在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名(...原创 2019-05-29 20:08:51 · 160 阅读 · 0 评论 -
Kotlin研发第七弹——属性与字段
属性与字段声明属性Kotlin的类可以有属性。 属性可以用关键字var 声明为可变的,否则使用只读关键字val。class Address { var name: String = …… var street: String = …… var city: String = …… var state: String? = …… var zip: Stri...原创 2019-05-29 20:10:55 · 138 阅读 · 0 评论 -
Kotlin研发第八弹——可见性修饰符
可见性修饰符类、对象、接口、构造函数、方法、属性和它们的 setter 都可以有 可见性修饰符。 (getter 总是与属性有着相同的可见性。) 在 Kotlin 中有这四个可见性修饰符:private、 protected、 internal 和 public。 如果没有显式指定修饰符的话,默认可见性是 public。以下解释了这些修饰符如何应用到不同类型的声明作用域。包函数、属性和类、...原创 2019-05-29 20:12:37 · 154 阅读 · 0 评论 -
Kotlin研发第九弹——扩展
扩展Kotlin 同 C# 与 Gosu 类似,能够扩展一个类的新功能而无需继承该类或使用像装饰者这样的任何类型的设计模式。 这通过叫做 扩展 的特殊声明完成。Kotlin 支持 扩展函数 与 扩展属性。扩展函数声明一个扩展函数,我们需要用一个 接收者类型 也就是被扩展的类型来作为他的前缀。 下面代码为 MutableList<Int> 添加一个swap 函数:fun Muta...原创 2019-05-29 20:15:13 · 154 阅读 · 0 评论 -
Kotlin研发第十弹——数据类
数据类我们经常创建一些只保存数据的类。 在这些类中,一些标准函数往往是从数据机械推导而来的。在 Kotlin 中,这叫做 数据类 并标记为 data:data class User(val name: String, val age: Int)编译器自动从主构造函数中声明的所有属性导出以下成员:equals()/hashCode() 对;toString() 格式是 "User(na...原创 2019-05-29 20:18:13 · 121 阅读 · 0 评论 -
Kotlin研发第十一弹——属性声明和代理
属性声明在kotlin中类可以有属性,有两种val: 关键字声明只读**var:**声明可变属性class Name{var name:String ?=null}Getter和Setter方法var声明后拥有getter和setter方法val声明后只有getter方法备用字段在kotlin中类不可以有字段,然而当使用自定义的防蚊器时有时候需要备用字段,处于这些原因kot...原创 2019-05-30 09:50:40 · 253 阅读 · 0 评论 -
Kotlin研发第十三弹——高阶函数和lambda表达式
高阶函数和lambda表达式尾递归函数(tailrec)kotlin支持函数时编程的尾递归。这个允许一些算法可以通过循环而不是递归解决问题,从而避免了栈溢出。当函数被标记为tailrec时,编译器会优化递归,并用高效迅速的循环代替它//尾递归tailrec fun findFixPoint(x:Double=1.0):Double=if (x==Math.cos(x))x else fin...原创 2019-05-30 09:51:08 · 294 阅读 · 0 评论 -
Kotlin研发第十二弹——函数和lambda表达式
函数和lambda表达式函数1、函数声明在kotlin中用关键字fun声明函数:fun double(x:Int):Int{}2、函数用法通过传统的方式调用函数val resule=double(2)通过.调用成员函数Sample().foo()//创建Sample类的实例,调用foo方法3、中缀符号(infix)在满足以下条件时,函数也可以通过中缀符号进行...原创 2019-05-30 09:51:00 · 257 阅读 · 0 评论 -
Kotlin研发第二十六弹 终章—— 互用性
互用性链接动态类型交互java交互在kotlin中调用java代码交互Java交互kotlin在设计时就是以Java交互为中心的。现存的Java代码可以在kotlin中使用。在kotlin中调用Java代码基本所有的Java代码都可以运行import java.util.*fun demo(source: List<Int>) { ...原创 2019-05-30 09:53:09 · 213 阅读 · 0 评论