Kotlin
xlh1191860939
一个android小菜鸟
展开
-
Kotlin学习系列之:对比Any和Object
Any中定义的方法有:toString()、equals()、hashCode() 3个Object类中定义的方法有:toString()、equals()、hashCode()、getClass()、clone()、finalize()、notify()、notifyAll()、wait()、wait(long)、wait(long,int) 11个联系:Kotlin编译器将kotlin.A...原创 2017-08-25 15:05:47 · 8412 阅读 · 0 评论 -
Kotlin学习系列之:运算符重载(operator overloading)
1.引入:运算符重载,最初接触到这个概念是在C++里,Java中是没有的,取而代之的是通过特定接口来实现,比如进行排序比较大小时,我们可以实现Comparable接口。而Kotlin中,又重新支持该特性,因为这样会显得更加直观。2.如何实现运算符重载: 方式一:在类内定义,以成员方法(member)的形式 比如,我们定义一个Point类: data class Point(va...原创 2019-08-08 21:09:10 · 1829 阅读 · 0 评论 -
Kotlin学习系列之:协程的创建(二)
在系列一中,我们已经对协程有了初步的了解,我们在此篇继续。前面我们是通过GlobalScope.launch{}这个协程建造器来创建协程的,它的特点就是: Launches a new coroutine without blocking the current thread. 即不会阻塞当前的线程的运行。我们再来接触一个不一样的协程建造器: runBlocking{} ...原创 2019-08-01 16:57:13 · 382 阅读 · 0 评论 -
Kotlin学习系列之:协程的创建(一)
1.协程:Coroutine2.如何去理解协程: 可以视为轻量级的线程 我们可以回顾一下什么是线程。从操作系统原理的角度来讲,进程是资源分配的基本单位,而线程是调度的基本单位,也就是说线程实际上是系统级别的,它运行与否是由操作系统决定的。从Java语言层面上讲,我们可以通过new Thread().start这种形式去启动一个线程,我们可以查看Thread类的源代码: publi...原创 2019-07-20 23:32:33 · 718 阅读 · 0 评论 -
Kotlin学习系列之:inline
inline: Kotlin中的一个关键字,用来修饰function,那么这个function就被称作inline function(内联函数)。最初接触内联函数这个概念还是当初在学校学习C语言时候提到的,Java中是没有这一概念的,如今Kotlin又引入这一特性。那么inline function有什么优势或者说特点呢? 特点:当你调用一个inline function的时候,编译...原创 2019-02-01 10:30:11 · 5567 阅读 · 0 评论 -
Kotlin学习系列之:相等性比较(Equality)
今天被同事问到了三个等于号啥意思,有点懵,去年学习的时候没怎么太注意,所以翻了翻文档,特此记录一下:感觉文档上的概括很好,并且对于我如果回答==和equals的区别,感觉上面这种分类概括性很强:引用相等和结构相等。对于Object类中,equals方法的默认实现就是引用相等比较,如果要想某个类实现结构相等性比较,就必须重写equals方法,这是在Java中。在Kotlin中呢,原理是...原创 2018-12-07 17:28:57 · 1046 阅读 · 0 评论 -
Kotlin学习系列之:理解Backing Field
对于Backing Field这个概念,在Java中是没有的,是Kotlin中新引入的概念。我们先来看看它在什么情况下使用:class Person { var username: String = "hello" get() { println("getter invoked...") return field } set(...原创 2018-08-23 16:20:25 · 1063 阅读 · 0 评论 -
Kotlin学习系列之:可变参数
Kotlin中的可变参数 回顾一下Java中的可变参数的使用: public class VarArgsTest { public static void main(String[] args) { Test test = new Test(); // 调用方式一 System.out.println(test.sum(1, ...原创 2018-08-27 10:56:35 · 4926 阅读 · 0 评论 -
Kotlin学习系列之:数据类(data class)和密封类(sealed class)
一、数据类(data class) 在介绍数据类之前,我们先来看看这样一段代码:class Student(val name: String, var age: Int)fun main(args: Array<String>) { val student = Student("David", 12) println(student)}此时会...原创 2018-03-22 10:43:05 · 3809 阅读 · 0 评论 -
Kotlin学习系列之:扩展(Extension)
当想要扩展一个既有类的功能时,在Java中你能想到的方法:直接修改类的源代码进行功能扩充(当然前提是你可以修改源码,如果该类是别人写的或者说是库和框架提供的,这种方式直接就凉凉)继承,在子类中添加相关方法使用装饰模式,动态扩展对象的功能除了上面说的三种方式外,在Kotlin中还提供一种新的方式:扩展(Extension)。一、扩展函数(Extension Functions)1. 语法形式:fun...原创 2018-03-20 14:43:45 · 3103 阅读 · 0 评论 -
Kotlin学习系列之:object关键字的使用场景
object是Kotlin中的一个重要的关键字,也是Java中没有的。object主要有以下三种使用场景:对象声明(Object Declaration) 伴生对象(Companion Object) 对象表达式(Object Expression)下面就一一介绍它们所表示的含义、用法以及注意点,保证你在看完本篇之后就可以完全掌握object关键字的用法。1.对象声明(Obje...原创 2018-03-13 20:40:15 · 45586 阅读 · 11 评论 -
Kotlin学习系列之:Kotlin的构造函数
Kotlin的构造函数分为主构造器(primary constructor)和次级构造器(secondary constructor)。下面我们来看看他们的写法。一、 Primary Constructor1. 写法一:class 类名 constructor(形参1, 形参2, 形参3){}eg: class Person constructor(username: ...原创 2018-03-01 15:09:18 · 68151 阅读 · 9 评论 -
Kotlin学习系列之:委托(Delegate)
1. 引入:委托作为一种传统的设计模式,在Java中要想实现这种设计模式,就需要自己进行类的结构设计来实现。而在Kotlin中,提供语言层面上的支持,我们可以通过by关键字很轻松就能实现。2. 类委托(class delegate) 自己动手实现委托: interface ServerApi { fun login(username: String, password: S...原创 2019-08-15 16:28:10 · 2910 阅读 · 0 评论