![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kotlin
Lud_
积累点滴
展开
-
Kotlin协程入门(coroutine)
文章目录1.kotlin协程简介2.kotlin协程的特点3.启动协程的三种方式3.1 runBlocking3.2 launch3.3 async/await1.kotlin协程简介Kotlin协程的主要作用是像写同步代码一样写异步代码。避免回调地狱。2.kotlin协程的特点可控制:协程能做到可被控制的发起子任务轻量级:协程非常小,占用资源比线程还小语法糖:使多任务或多线程切换...原创 2020-03-15 14:37:37 · 533 阅读 · 0 评论 -
Kotlin创建DSL
<Kotlin从入门进阶到实战>什么是DSLDSL(Domain-Specific Language,领域特定语言)指的是专注于特定问题领域的计算机语言。不同于通用的计算机语言,领域特定语言之用在某些特定的领域。DSL语言让我们更简洁的方式来表达和解决领域问题。简单的讲就是对一个特定的问题的方案模型更高层次的抽象表达。使其更加简单易懂。DSL只是问题解决方案的外部封装。这个模型可...原创 2019-07-30 00:05:37 · 708 阅读 · 0 评论 -
Kotlin集合类
Kotlin是在java类库基础上进行了改造和扩展,引入了不可变集合类,同时扩展了大量方便实用的功能,这些功能api都在kotlin.collections包下。在kotlin集合类中不仅能支持普通对象,而且能够持有函数类型的变量。val funList: List<(Int) -> Boolean> = listOf({ it -> it % 2 == 0 }, ...原创 2019-07-21 12:19:25 · 1056 阅读 · 0 评论 -
Kotlin反射
在Kotlin中我们有两种方式来实现反射的功能。一种是调用Java的反射包 java.lang.reflect 下面的API,另外一种就是直接调用Kotlin的kotlin.reflect 包下面的API。不过Kotlin把包的实现放到了单独的kotlin-reflect-1.3.41.jar里面。如果想使用Kotlin反射功能需要在build.gradle中配置以下依赖。当前最高版本是1.3....原创 2019-08-02 19:39:19 · 3217 阅读 · 0 评论 -
Kotlin泛型、通配符、上限下限、协变逆变、PECS、out T、in T、类型擦除
Kotlin从入门到进阶实战为何引入泛型为何引入泛型,最引人注意的一个原因是为了创建容器类。集合类可以说是最常用的类之一,在没有泛型前,集合类是怎样持有对象的呢。在java中Object是所有类的根类。为了集合类的通用性,把元素类型定义为Object,当放入具体类型时,再进行相应的强制类型转换。在使用原生态类型实现的集合类中,使用Object[]数组。这种方式常见的问题有两个:1.像集合中添...原创 2019-07-21 22:40:40 · 3525 阅读 · 0 评论 -
Kotlin使用反射获取泛型信息
在java中,使用反射的代码实例如下:class Student { String name; Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } public String getN...原创 2019-08-03 21:59:52 · 5715 阅读 · 0 评论 -
Kotlin运算符重载与约定
java中不支持运算符重载,而Kotlin支持操作符重载。这些操作符在Kotlin中是约定好的固定符号。(如:加号 + 乘号 * 等),和固定的优先级。而应用这样的操作符,我们也必须使用映射固定名字的成员函数或者扩展函数(加法 plus 乘法 times)。重载操作符的函数需要用operator修饰符来标记。- 什么是运算符重载运算符重载时对已有的运算符赋予新的含义,使一个运算符作用于不同类型...原创 2019-07-31 19:05:03 · 518 阅读 · 0 评论 -
Kotlin文件I/O操作、网络IO的扩展
文件I/O操作Kotlin的I/O操作是通过扩展函数来实现的。Kotlin的I/O操作的API是在kotlin.io包下。原则就是java已经有好用的就直接用,没有或者不好用的类,就在原有类的基础上进行功能扩展。Kotlin文件读写常用的读写API如下://读取该文件的所有内容作为一个字符串返回 public fun File.readText(charset: Charset = C...原创 2019-07-27 21:19:22 · 2142 阅读 · 3 评论 -
Kotlin注解
声明注解Kotlin中声明主角用 annotation class 关键字,注解也是一种class,编译器同样可以对注解类型在编译器进行类型检查,实例如下:@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER)@Retention(AnnotationRetent...原创 2019-08-01 19:40:54 · 310 阅读 · 0 评论 -
Kotlin多线程编程
Kotlin中没有synchronized、volatile关键字。Kotlin的Any类似于java的Object,但是没有wait()、notify()和notifyAll()方法。Kotlin通过封装java中的线程类,简化了我们的编码。同时我们可以使用一些特定的注解,使用java中的同步关键字等。创建线程在java中通常有两种方式来创建线程:扩展Thread类或者进行实例化通过...原创 2019-07-28 17:41:16 · 7996 阅读 · 0 评论 -
Kotlin inline内联函数
inline使用inline标识方法,下面是一个简单的例子,一个inline修饰的go()方法和一个run()方法,然后再main方法中调用。object Text { inline fun go() { println("am fun go") } fun run() { println("am fun run") ...原创 2019-07-16 15:57:29 · 447 阅读 · 0 评论 -
Kotlin 函数与函数式编程
函数式编程简介函数式编程是关于不变性和函数组合的编程范式。特征如下:一等函数支持:函数也是一种数据类型,可以作为参数传入另一个函数中,同时函数也可以返回一个函数。纯函数和不变性:纯函数指的是没有副作用的函数(不去改变外部数据状态)。函数式编程是转换数据而不是改变数据。函数的组合:在面向对象编程中是通过对象之间发送消息来构建程序逻辑的;在函数式编程中是通过不同函数组合来构建程序逻辑的。...原创 2019-07-11 19:45:03 · 597 阅读 · 0 评论 -
Kotlin object修饰符
object修饰class下面是object修饰class的一个简单例子,就用object修饰 ObjTest,然后定义了一个 初始为0 的val i 和 一个str,还有一个go方法object ObjTest { val i = 0 val str = "hello" fun go() { val str = "am go" pr...原创 2019-07-15 23:55:53 · 1385 阅读 · 0 评论 -
Kotlin标签(label)和 throw表达式
在Kotlin中任何表达式都可以用标签(label)来标记。标签的格式为标识符后加@符号,比如 abc@ ,_OK@。我们可以用label来控制return、break、continue语句的跳转行为。代码示例如下: val intArray = intArrayOf(1, 2, 3, 4, 5) intArray.forEach here@{ if...原创 2019-06-25 19:34:39 · 1709 阅读 · 0 评论 -
Kotlin数据类型 Unit、Nothing与Nothing?、Any与Any?
Unit类型Kotlin也是面向表达的语言。在Kotlin中所有控制流语句都是表达式(除了变量赋值,异常等)Kotlin中Unit类型实现了与java中void一样的功能。public object Unit {// Unit类型是一个object对象类型 override fun toString() = "kotlin.Unit" // toString函数返回值}当一...原创 2019-07-01 19:40:43 · 18400 阅读 · 1 评论 -
Kotlin修饰符 lateinit (延迟初始化)
Kotlin定义变量一般有如下写法 lateinit var name: String var age: String? = null那么用lateinit 修饰和下面那种有什么区别呢,我们来看一下这两行代码编译长java代码是什么样子的。 @NotNull public String name; @Nullable private String age; ...原创 2019-07-08 20:14:21 · 13763 阅读 · 3 评论 -
Kotlin 流程控制语句
if表达式if…else语句是最基本的流程控制语句,else是可选的。再Kotlin中if是一个表达式,它会返回一个值,函数:String指定返回类型private fun max(a: Int, b: Int): Int { return if (a > b) a else b }private fun max(a: Int, b: Int): Stri...原创 2019-06-24 19:38:30 · 144 阅读 · 0 评论 -
Kotlin可空类型
Kotlin可空类型为了避免Null Pointer Exception,java8中,我们可以使用Optional类型来表达可空的类型。 public static void main(String[] args) { System.out.println(strLength(Optional.of("abc"))); System.out.println...原创 2019-06-27 19:17:37 · 223 阅读 · 0 评论 -
Kotlin中特殊函数 run()、apply()、let()、also()、with()
Kotlin中特殊函数run() 函数@kotlin.internal.InlineOnlypublic inline fun <T, R> T.run(block: T.() -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } retu...原创 2019-07-12 19:41:02 · 335 阅读 · 0 评论 -
Kotlin 类型检测与类型转换
类型检测is 运算符is运算符可以检查对象A是否是特定的类型,还可以检查一个对象是否属于某种数据类型(Int、String等)。is运算符相当于java中的 instanceofKotlin中我们可以在运行时通过 is 或者 !is 来检查对象是否符合所需的类型 println("abc" is String) println("abc" !is String)...原创 2019-07-04 19:23:05 · 13368 阅读 · 0 评论 -
Kotlin数据类 data class、Pair 和 Triple
Kotlin数据类 data class使用关键字data class 创建一个只包含数据的类data class DataClass(val userName: String, val pwd: String) {}反编译之后的java代码如下所示public final class DataClass { @NotNull private final String ...原创 2019-07-10 19:26:42 · 3424 阅读 · 1 评论 -
Kotlin 枚举、内部类
枚举类Kotlin 中用enum声明枚举enum class EnumC { A, B, C}枚举类有两个默认的属性// name 对应对象的值EnumC.A.name // ordinal 对应对象的下标EnumC.B.ordinal每一个枚举都是枚举类的实例enum class EnumC(var color: String) { A("颜色...原创 2019-07-10 20:01:54 · 366 阅读 · 0 评论 -
Kotlin扩展属性和扩展函数
Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。下面是将一个String类扩展一个自己的函数一般可以在base中扩展,在子类中调用,代码如下package com.demo.kotlinopen class Base { fun String.getFirstChar():...原创 2019-06-10 20:03:11 · 1590 阅读 · 3 评论