
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
一、本文概要二、可空性2.1 可空类型当我们在声明方法时,如果允许在这个方法被调用的时候传给它null的实参,则需要显示地在类型名称后面加上问号来标记它:问号可以加在任何类型的后面来表示这个类型的变量可以存储null引用,而所有常见类型默认都是非空的,除非显示地把它标记为可空。当你有一个可空类型的值,对它的操作也会受到限制:不能调用它的方法不能把它赋值给非...
一、本文概要二、在 kotlin 中创建集合在kotlin中,创建HashSet、ArrayList和HashMap的方法如下:通过打印这些集合的类型,可以看到是采用的标准的Java集合类:这么做的原因,是因为使用标准的Java集合使kotlin可以更容易地与Java代码交互。当从Kotlin调用Java函数的时候,不用转换它的集合类来匹配Java的类,反之亦然。在...
一、本文概要在Kotlin中,我们可以通过 调用自己代码中定义的函数,来实现 特定语言结构。这些功能与 特定的函数命名 相关,而不是与特定的类型绑定。例如,如果在你的类中定义了一个名为plus的特殊方法,那么按照约定,就可以在该类的实例上使用+运算符,这种技术称为 约定。因为由类实现的接口集是固定的,而Kotlin不能为了实现其他接口而修改现有的类,因此一般 通过扩展函数的机制 来为现...
一、本文概要二、基本数据类型和其它基本类型2.1 基本类型:Int、Boolean 及其它Java把基本数据类型和引用类型做了区分:基本数据类型,例如int的变量直接存储了它的值,我们不能对这些值调用方法,或者把它们放到集合中。引用类型的变量存储的是指向包含该对象的内存地址的引用。Kotlin不区分基本数据类型和引用类型,它使用的永远是一个类型(例如Int),此外,你还能...
一、本文概要二、委托属性的基本操作2.1 委托属性的基本语法class Foo {var p : Type by Delegate()}类型为Type的属性p将它的访问器逻辑委托给了另一个Delegate实例,通过关键字by对其后的 表达式求值 来获取这个对象,关键字by可以用于任何 符合属性委托约定规则的对象。按照约定,Delegate类必须具有getVal...
一、本文概要二、声明高阶函数按照定义,高阶函数就是 以另一个函数作为参数或者返回值的函数,在Kotlin中,函数可以用lambda或者函数引用来表示。例如,标准库中的filter函数将一个判断式函数作为参数,因此它就是一个高阶函数。list.filter { x > 0 }2.1 函数类型为了声明一个以lambda作为实参的函数,你需要知道如何声明对应形参的类型...
一、本文概要二、泛型类型参数泛型允许你定义带 类型形参 的类型,当这种类型的实例被创建出来的时候,类型形参被替换成为 类型实参 的具体类型。和Java不同,Kotlin始终要求类型实参要么被显示地说明,要么能被编译器推导出来。例如,在Java中可以声明List类型的变量,而不需要说明它可以包含哪些事物,而Kotlin从一开始就有泛型,所以它不支持原生态类型,类型实参必须定义。...
一、本文概要二、数据类和类委托2.1 数据类:自动生成通用方法的默认实现在平时的开发中,我们往往会使用许多的xxBean对象用作数据容器,而在定义这些对象时,一般会重写它的以下三个方法:equals:用来比较实例hashCode:用来作为例如HashMap这种基于哈希容器的类toString:用来为类生成按声明顺序排列的所有字段的字符串表达形式在Kotlin中,只需...
一、本文概要二、内联函数当我们使用lambda表达式时,它会被正常地编译成匿名类。这表示每调用一次lambda表达式,一个额外的类就会被创建,并且如果lambda捕捉了某个变量,那么每次调用的时候都会创建一个新的对象,这会带来运行时的额外开销,导致使用lambda比使用一个直接执行相同代码的函数效率更低。如果使用inline修饰符标记一个函数,在函数被调用的时候编译器并不会生成函数...
前言:随着公司项目对主开发语言切换的需要,本人也是在持续的对Kotlin语言进行深入全面的学习和使用。相比Java, Kotlin提供了不少高级语法特性,在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能







