
KotlinForAndroid
文章平均质量分 93
致力于Kotlin语言的技术及在Android中的应用
行云间
z大厦大法师打发斯蒂芬
展开
-
Kotlin-值范围
概述在Kotlin的标准库中提供了ClosedRange整数性的值范围任何可比较大小的数据类型(comparable type)都可以定义值范围, 但对于整数性的基本类型, 在Kotlin中做了特殊的优化。在标准库中,定义了 IntRange , LongRange , CharRange等3个Range,我们可以直接使用。可以对这些值范围进行遍历. 编译器会负责将这些代码变换为 Java 中基于下原创 2016-12-05 20:27:53 · 4378 阅读 · 1 评论 -
Kotlin-this
为了表示当前函数的接收者(receiver), 们使用this表达式:在类的成员函数中,this指向这个类的当前对象实例;在扩展函数中,或带接收者的函数字面值(function literal) 中, this 代表调用函数时, 在点号左侧传递的接收者参数;如果this没有限定符,那么它指向包含当前代码的最内层范围.如果想要指向其他范围内的this,需要使用标签限定符。带限定符的this为了访原创 2016-12-05 21:00:04 · 4019 阅读 · 0 评论 -
Kotlin-null的处理
NullPointerException,俗称NPE,不管菜鸟还是老鸟们,都是不可避免,经常遇到的一个异常,解释起来很简单,就“空指针”三个字。总是在一次不小心,而掉进这个陷阱里。Kotlin 的设计目标就是希望消除代码中 null 引用带来的危险, 也就是所谓的造成十亿美元损失的大错误.NPE的原因尽管Kotlin希望消除代码中的NPE,我们总是不小心,总会不小心又掉进NPE的陷阱,下面是可能NP原创 2016-12-05 21:55:29 · 8395 阅读 · 0 评论 -
Kolin-集合详解(二)
概述自从Java 8支持了lambda表达式以来,Lambda表达式是实现大量函数特性的基础,让Java开发越来越趋向于流程式开发。在Kolin中,对Lambda表达式有完美的支持,又因为扩展这一特性,Kotlin也走在了函数式编程的前沿。对于集合,Kotlin提供的不同类型集合,在标准库中,对这些集合实现了一些扩展,以更种方式对集合操作。熟练的函数式编程的基础,是对相关函数有一定的认识和了解。话不原创 2016-12-03 18:35:50 · 4787 阅读 · 0 评论 -
Kotlin-集合详解(一)
概述集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。集合的分类:Set(集)List(列表)Map(映射)在Kotlin中,明确的区分了可变和只读的集合(list, set, map等),明确的确定了集合的可读性,有助于良好的编码,以及便于Bug的规避。IterableIterable接口是最基本的接口,声明了Kotlin中集合的通用方法原创 2016-11-30 14:40:18 · 48833 阅读 · 4 评论 -
IDEA创建Kotlin工程
1.配置IDEA IDEA下载地址:https://www.jetbrains.com/idea/download/#section=windows 现IDEA最新的版本是2016.2.4,此版本已经集成了Kotlin插件。若安装的IDEA早于IDEA 15 需安装Kotlin插见。安装步骤见下图 2.创建工程,JDK版本应选择1.6以上,同时选择工程为Kotlin(Java) 3.原创 2016-10-13 16:40:06 · 9979 阅读 · 2 评论 -
Kotlin - 基本数据类型
Kotlin和Java一样,都是基于JVM的静态类型语言,意味着所有变量和表达式类型在编译时已确定。不同的是,Java通过装箱和拆箱在基本数据类型和包装类型之间相互转换,但Kotlin中的,所有变量的成员方法和属性都是对象。一些类型是Kotlin中内建,相当于创建的普通类,直接调用即可。在Kotlin源代码中,不管是常量还是变量在声明是都必须具有类型注释或者初始化。如果在声明时,进行了初始化,会自行原创 2016-10-14 11:44:34 · 7985 阅读 · 0 评论 -
Kotlin - 运算符重载
Kotlin支持标准的算术运算表达式, 其中运算符被声明为相应类的成员。Kotlin源代码中,我们可以自定义类型的运算符实现,即运算符的重载。这些运算符有固定的表示, 和固定的优先级。Kotlin为基本类型提供了固定名称的数值函数,比如二元运算符的左值和一元运算符的参数类型。运算符的优先级运算符重载预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。运原创 2016-10-14 17:10:52 · 9723 阅读 · 4 评论 -
Kotlin - package、import及as等关键字
package为了方便管理大型软件系统中数目众多的类,解决类的命名冲突问题,类似于Java,Kotlin同样引入包(package)机制,提供类的多重类名空间。package语句必须是文件中的第一行非注释的程序代码。package foo.barfun bza() {}class Goo {}//...源文件的所有内容(比如类和函数)都被包声明包括。 因此在上面的例子中,bza() 的全名应原创 2016-10-17 19:42:56 · 5291 阅读 · 0 评论 -
Kotlin中的流程控制语句
流程控制语句是编程语言中的核心之一。可以分为 分支语句、循环语句和跳转语句。下面我们深入的了解Kotlin的流程控制语句。ifif-else语句是控制程序流程的最基本的形式,其中else是可选的。在Kotlin中,if是表达式,比如它可以返回一个值。 是除了condition ? then : else)之外的唯一一个三元表达。传统用法val a = 10val b = 20var max_0:原创 2016-10-17 22:05:19 · 16749 阅读 · 4 评论 -
Kotlin-类
类声明在Kotlin 中类用 class 声明:class Person(name : String, age : Int) {}类的声明包含类名,类头(指定类型参数, 主构造函数等等),以及类主体,其中类体用大括号包裹。 类头和类体是可选的;如果没有类体可以省略大括号。class Empty构造函数概述在Kotlin中类可以有一个主构造函数以及多个二级构造函数。 主构造函数是类头的一部分:跟原创 2016-10-18 16:49:13 · 1284 阅读 · 2 评论 -
Kotlin - 继承
继承作为OOP的三大特性之一,Kotlin对其必然有自己的理解。Kotlin以“:”操作符,完成子类继承父类。AnyThe root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.在官方文档上是这么介绍Any类的,Any类是所有Kotlin文件的根,所有的类均继承于Any类。创建一个类时,若为原创 2016-10-19 09:50:03 · 4461 阅读 · 0 评论 -
Kotlin-抽象类和接口
对于面向对象编程来说,抽象是它的一大特征之一。在Kotlin中可以通过抽象类和接口来完成抽象。抽象类和接口有很多相似之处,又有不同之处。抽象方法抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract fun doSwim()抽象方法必须用abstract关键字进行修饰抽象方法不用手动添加open,默认被open修饰抽象方法没有具体的实现含有抽象方法的类成原创 2016-10-19 16:48:39 · 11793 阅读 · 3 评论 -
Kotlin-对象表达式,对象声明及伴随对象
概述在Java中,不管是为了实现接口,或者是抽象类,我们总是习惯使用匿名内部类。最熟悉的例子,莫过于对单击事件的监听,也就是这样写:btn.setOnClickListener(new OnClickListener{ // 处理单击事件逻辑 *** });尽管该匿名类只能被使用一次,这样,我们没有必要再去实现OnClickListener接口并创建一个类,从而简化了代码。可是,原创 2016-10-26 19:53:45 · 5639 阅读 · 0 评论 -
Kotlin-属性
声明属性对于类而言,属性必然是不可缺少的。在Kotlin中,属性值由var和val关键字声明,其中,var声明的属性值为可变的,而val声明的属性值是只读属性,也就是说其值是不可变的。class Person { var name = "张红" var age: Int = 10 val sex: String = "M" private var mobile: St原创 2016-11-17 21:13:43 · 4430 阅读 · 2 评论 -
Kotlin-可见性修饰符
可见性修饰符用于其修饰对象的适用范围。在Kotlin中,存在private、protectedinternal以及 public等四种修饰符,它们可用于修饰类、对象、接口、构造器、函数、属性、以及属性的设值方法等。 注:属性的取值方法永远与属性本身的可见度一致, 因此不需要修饰符修饰。 在不同的作用范围内,修饰符的意义有一定的差别,下面从包、类和接口、模块(Model)等三个范围内看:包在Kot原创 2016-11-18 13:59:59 · 9315 阅读 · 0 评论 -
Kotlin-扩展
概述在Kotlin中,允许对类进行扩展,不需要继承或使用 Decorator 模式,通过一种特殊形式的声明,来实现具体实现某一具体功能。扩展函数是静态解析的,并未对原类增添函数或者属性,也就是说对其本身没有丝毫影响。扩展函数概述扩展类的函数, 即 Extension Function , 可以在已有类中添加新的方法, 比继承更加简洁和优雅.定义形式扩展函数定义形式:fun receiverType.原创 2016-11-22 20:11:46 · 3633 阅读 · 0 评论 -
Kotlin-数据类
概述在开发过程中,经常会创建一些数据里,其没有任何逻辑功能,仅仅来用来保存数据。在Kolin中,将这些类统一称为数据类,用关键字data标记。data class User(val name: String, val age: Int)编译器会根据主构造器中声明的全部属性, 自动推断产生以下成员函数:equals()/hashCode()函数对,toString() 函数, 输出格式为 “Us原创 2016-11-23 14:01:03 · 4510 阅读 · 2 评论 -
Kotlin-嵌套类
嵌套类定义说的简单一点,就是定义在类里面的类。一般把定义内部类的外围类成为包装类或者外部类。class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 }} val demo = Outer.Nested().foo() // == 2嵌套类的实例的创建方式与普通类稍有不同,需要原创 2016-11-24 11:13:02 · 3413 阅读 · 0 评论 -
Kotlin-枚举
定义一个类的对象是有限且固定的,这种实例有限且固定的类称为枚举类。定义形式enum class enumName { ....} 每个枚举常数都是一个枚举类的实例. 枚举常数之间用逗号分隔. 初始化由于每个枚举值都是枚举类的一个实例, 因此枚举值可以初始化。enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x0原创 2016-11-24 14:46:21 · 3288 阅读 · 0 评论 -
Kotlin-函数
概述许多程序设计语言(像C和C++)用函数这个术语来描述命名子程序;在Kotlin中,依然延续这个术语来表示“做某些事情的方式”,实际上把它当作java中的方法是一样的,只不过是命名方式的不同而已,没有什么实际意义。函数声明Kotlin中的函数决定了一个对象能够接收到什么样的信息,函数的基本组成部分包括:名称、参数、返回值和函数体,其使用fun关键字定义函数,定义形式为:fun methodName原创 2016-11-27 18:28:14 · 9373 阅读 · 6 评论 -
Kotlin-代理属性(by)
概述所谓委托模式 ,就是为其他对象提供一种代理以控制对这个对象的访问,在Java开发过程中,是继承模式之外的很好的解决问题的方案,不熟悉委托模式的,可以参考博客 font size=4>委托模式。对于Kotlin而言,其直接支持委托模式,从而避免为了实现模式而不得不写那些常规的代码。又不得不赞叹,Kotlin的优雅,简洁。byKotlin中,委托的实现依靠于关键字 by ,by表示将抽象主题的实例(原创 2016-11-28 10:40:55 · 12275 阅读 · 2 评论 -
Kotlin-解构声明
解构声明所谓的解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量.简单的来说,一个解构声明有两个动作:声明了多个变量将对象的属性值赋值给相应的变量比如,有个数据类Person,其有name和age两个属性data class Person(var name: String, var age: Int) {}当我们对Person的实例原创 2016-11-28 14:47:08 · 3723 阅读 · 0 评论