
Kotlin
韩曙亮
闭关修炼中
-
原创 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
一、创建支持 Kotlin 的 NDK 项目、二、Kotlin 语言中使用 NDK 要点、1、加载动态库、2、声明 ndk 方法、3、Project 下的 build.gradle 配置、4、Module 下的 build.gradle 配置、三、代码示例、1、Java 代码、2、C++ 代码、3、Project 下的 build.gradle、4、Module 下的 build.gradle、5、执行效果、四、GitHub 地址2020-12-16 14:58:4351
1
-
原创 【Kotlin】Kotlin 自定义组件 ( 自定义 View | 自定义 SurfaceView )
文章目录一、自定义 View 组件 ( Java )二、自定义 View 组件 ( Kotlin )三、自定义 SurfaceView 组件 ( Java )四、自定义 SurfaceView 组件 ( Kotlin )一、自定义 View 组件 ( Java )二、自定义 View 组件 ( Kotlin )三、自定义 SurfaceView 组件 ( Java )四、自定义 SurfaceView 组件 ( Kotlin )...2020-07-24 21:32:51149
0
-
原创 【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )
一、For 循环、二、For 循环遍历 Iterator 对象、三、Iterator 遍历要求、四、IntArray 源码解析2020-07-23 10:48:38226
0
-
原创 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
I . 函数类型II . 带参数名的参数列表III . 可空函数类型IV . 复杂函数类型解读V . 函数类型别名VI . 带 接收者类型 的函数类型VII . 函数类型实例化VIII . 函数类型自动推断IX . 带接收者的函数类型 与 不带接收者的函数类型 之间的转换X . 函数类型变量调用2020-05-13 18:17:08248
0
-
原创 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
I . Lambda 表达式 简介II . Lambda 表达式语法III . Lambda 表达式类型IV . Lambda 表达式返回值V . Lambda 表达式调用VI . Lambda 表达式完整语法示例 ( 声明 | 实现 | 调用 )2020-05-12 19:57:02288
0
-
原创 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
初学 Kotlin , 对变量机制不清楚的同学们 , 看完这篇博客基本就对变量的定义和使用有清晰的认识 ;1 . 变量定义只有四种情况 : ① 非空变量 / 可空变量 直接赋值非空初始值 ; ② 可空变量使用 ?= null 赋空值 ; ③ 非空变量 ( 引用类型 ) 使用 lateinit 修饰 ; ④ 抽象属性变量不初始化 ;2 . !! 与 ? 修饰符 : 仅对于 可空类型 有效 , ? 高级不报错 , !! 低级报空指针异常 ;2020-05-11 22:34:39625
0
-
原创 【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
I . 特别注意 : ButterKnife 已停止维护 ( 新项目禁止使用该框架 )II . Android Studio 中配置 Kotlin 和 ButterKnife 步骤III . Android Studio 中配置 Kotlin 和 ButterKnife 示例IV . Kotlin 注解错误使用V . 错误处理 导入库冲突 ( 与 androidx 冲突 )2020-04-14 20:47:34471
1
-
原创 【Kotlin】扩展接收者 与 分发接收者 ( 类内部扩展用法 | 注意事项 | open 修饰扩展 )
I . 类内部扩展其它类II . 扩展接收者 与 分发接收者 注意事项III . open 修饰 分发接收者 类型中的扩展2020-04-02 21:19:35265
0
-
原创 【Kotlin】扩展函数作用域分析 ( 扩展函数导入 | 扩展函数重载 | 扩展函数作用域优先级 )
扩展函数作用域总结 :① 扩展函数作用域 : 扩展函数使用需要导入包 , 如果在本包中使用 , 可以默认不导入包 ;② 扩展函数可以重载 : 函数名相同 , 函数签名不同的扩展函数可以同时定义 , 导入包时导入一次即可调用所有的重载的扩展函数 ;③ 扩展函数作用域优先级 : 声明导入的扩展函数优先级高于默认包的优先级 , 声明导入哪个包就调用哪个包的扩展函数 ;2020-04-02 12:38:40346
0
-
原创 【Kotlin】扩展属性 ( 扩展变量属性 | 扩展常量属性 | 注意事项 | 本质分析 )
扩展属性 总结 :① 修饰 : 变量扩展属性使用 var 修饰 , 常量扩展属性使用 val 修饰 ;② 属性访问器定义 : 变量属性必须定义 get 和 set 属性访问器方法 , 常量属性必须定义 get 属性访问器方法 ;③ 注意事项 : 扩展属性没有幕后字段 , 没有初始化器 , 必须定义属性访问器 ;④ 扩展属性本质 : 扩展属性没有在内存中分配字段保存该属性 , 其本质是一个经过计算得出的值 , 扩展变量属性相当于扩展了两个属性访问器方法 ;2020-04-01 21:02:26280
0
-
原创 【Kotlin】扩展函数 ( 扩展函数声明 | 调用方式 | 与成员函数优先级 | 接收者空值处理 )
扩展函数总结 :① 扩展函数定义方式 : fun 接收者类型.函数名(参数列表){函数体}② 扩展函数调用方式 : 父类和子类定义了相同函数签名的扩展函数 , 根据变量声明的类型调用对应的扩展函数 , 不根据变量的实际类型调用 ;③ 扩展函数与成员优先级对比 : 成员函数优先级高于扩展函数 , 相同签名的两个函数 , 优先调用成员函数 ;④ 可空接收者类型 : 可以为可空类型的接收者定义扩展函数 , 即声明扩展函数和调用扩展函数的类型后面都必须有 ? 修饰 ; ( 注意空值判定处理 )2020-04-01 14:00:12160
0
-
原创 【Kotlin】属性 与 幕后字段 ( 属性声明 | 属性初始化器 | 属性访问器 | field 属性幕后字段 | lateinit 延迟初始化属性 )
属性与字段总结 :① 完整的属性声明格式如下 :② 属性初始化器 : 就是为属性赋予一个初始值 ;③ 属性访问器 : 即 属性的 getter 和 setter 方法 ;④ 属性幕后字段 : 属性的实际值存储在 field 幕后字段中 , 只能在属性访问器中可以使用 field 获取该值 ;⑤ 延迟加载属性 : 该属性只能是引用类型 , 并且不2020-03-31 21:14:24267
0
-
原创 【Kotlin】接口 ( 声明 | 实现 | 接口方法 | 接口属性 | 接口覆盖冲突 | 接口继承 )
接口总结 :① 声明与实现 : 使用 interface 关键字声明接口 , 实现时需要重写所有的抽象成员 ( 属性 / 方法 ) ;② 接口成员 : 接口中的 正常成员属性和成员方法默认使用 open 关键字修饰 , 接口中的抽象成员属性和抽象成员方法默认使用 abstract open 关键字修饰 ;③ 接口属性及覆盖 : 变量属性声明成抽象属性 , 常量属性可以声明成抽象属性 , 也可以添加访问器 ;④ 接口覆盖冲突问题 : 实现类实现多个接口 , 使用 super<接口名称> 调用2020-03-31 12:02:29199
0
-
原创 【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )
抽象类总结 :① 声明 : 抽象类中使用 abstract 声明 ;② 成员 : 抽象类中既可以定义正常属性和方法 , 又可以定义抽象的属性和方法 ;③ 继承 : 抽象类可以继承抽象类 , 抽象类也可以继承正常类 , 正常类可以继承抽象类 ;④ 重写 : 抽象类中可以使用抽象方法重写正常方法 , 也可以进行正常的方法重写 ;⑤ 特征 : 抽象方法只能定义在抽象类中 , 正常类中不能有抽象方法 ;2020-03-30 21:18:24454
0
-
原创 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
I . 子类调用父类总结II . 子类调用父类方法 ( super )III . 子类内部类调用父类方法 ( super@ )IV . 子类选择调用不同的 父类 / 接口方法 ( super<> )2020-03-30 13:27:132027
0
-
原创 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
I . 属性覆盖基本方式II . 属性覆盖的四种情况III . 常量 ( val ) / 变量 ( var ) 属性覆盖IV . 子类初始化时考虑覆盖属性的使用2020-03-29 22:41:27248
0
-
原创 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )
I . 类继承基本方式II . 使用 final 禁止类继承 / 方法重写III . 父类没有主构造函数IV . 父类有主构造函数V . 父类构造函数与子类构造函数总结2020-03-28 22:59:24231
0
-
原创 【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )
I . 主构造函数II . 主构造函数声明属性III . init 初始化代码块IV . 主构造函数参数 和 成员变量访问方式V . 主构造函数 可见性 设置VI . 次构造函数 ( 常用情况 )VII . 次构造函数 ( 没有主构造函数 )VIII . 构造函数 代码执行顺序IX . 调用 主构造函数 / 次构造函数 创建类实例对象2020-03-27 14:01:57382
0
-
原创 【Kotlin】Kotlin 领域特定语言 DSL 原理 二 ( 中缀表达式 )
I . 中缀表达式 ( 中缀调用 )II . 中缀表达式 ( 中缀调用 ) 示例代码2020-03-27 10:02:3398
0
-
原创 【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )
I . DSL 简介II . Kotlin 函数扩展III . Kotlin 属性扩展2020-03-26 23:20:03222
0
-
原创 【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )
I . List 集合高阶函数引入II . Kotlin 数据类 ( data class )III . Java 代码 与 Kotlin 代码实现对比 ( 查询年龄最大的 )IV . maxBy 高阶函数V . minBy 高阶函数VI . filter 高阶函数VII . map 高阶函数VIII . any 高阶函数IX . count 高阶函数X . find 高阶函数XI . Kotlin 语言集合中的高阶函数 代码示例2020-03-26 15:08:15539
0
-
原创 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )
I . 内联扩展函数 applyII . Kotlin 调用 Java APIIII . apply 内联扩展函数示例 ( 调用 Java API 处理图像 )2020-03-25 21:39:30202
0
-
原创 【Kotlin】Kotlin 高阶函数 ( 高阶函数当做参数 | 高阶函数定义 | 高阶函数调用 )
I . Kotlin 高阶函数概念II . Kotlin 高阶函数 作为 参数 示例解析 ( forEach 方法参数解析 )III . 用作函数参数的 函数类型变量 ( 本示例中使用匿名函数 )IV . 函数类型实例使用V . Kotlin 高阶函数 整体代码示例2020-03-25 16:10:09380
0
-
原创 【Kotlin】Kotlin enum 枚举类 ( 常用用法 | 初始化成员变量 | 实现抽象方法 | 实现接口 | 获取名称和位置索引 | 调用枚举常量方法 )
I . 枚举类常用用法II . 枚举类初始化III. 枚举类匿名类IV . 枚举类实现接口V . 获取枚举常量名称和位置索引VI . 获取枚举常量的成员变量VII . 调用枚举常量的方法VIII . Kotlin 枚举完整代码示例2020-03-23 00:07:571075
0
-
原创 【Kotlin】Kotlin Sealed 密封类 ( 密封类声明 | 密封类子类定义 | 密封类特点 | 代码示例 )
I . 密封类概念II . 密封类声明III. 密封类注意事项IV . 密封类 示例代码2020-03-22 23:09:58170
0
-
原创 【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )
I . 单例的懒汉式与恶汉式II . Java 中的懒汉式与恶汉式III . Kotlin 中对应 Java 的懒汉式与恶汉式IV . Kotlin 对象 ( object ) 声明V . Kotlin 伴生对象 ( companion object )VI . ? 与 !! 作用2020-03-22 22:12:47263
0
-
原创 【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
使用 by 关键字进行接口委托2020-03-20 23:27:22311
0
-
原创 【Kotlin】Kotlin 抽象类与接口 ( 接口声明 | 接口实现 | 抽象类声明与实现 )
接口 : 表现事物的能力 , 只能有方法 ; 抽象类 : 表现事物的本质 , 可以有成员和抽象方法2020-03-20 00:08:07155
0
-
原创 【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )
I . 创建简单类 ( 整型字段 )II . 创建简单类 ( 整型字段 + 字符串字段 )III . 类方法定义IV . 封装V . 继承VI . 多态 与 抽象类2020-03-17 23:21:24184
0
-
原创 【Kotlin】IntelliJ IDEA 创建 Kotlin 项目
【代码库】系列博客, 展示 ①常用代码片段 及 ②使用流程, 以便快速开发, 不讲解原理 及 过程. 一.列表显示 1.ListView | SimpleCursor 简单展示列表(1)简单列表2020-02-25 17:53:56123
0
-
原创 【Kotlin】Kotlin 语言基础 ( 环境安装 | 变量 | 简单使用 | 函数 | 异常 | 递归 )
一. Kotlin 环境安装1. Eclipse 环境安装(1) 相关下载地址(2) Eclipse 环境安装(3) Eclipse 插件安装2. IntelliJ IDEA 环境安装(1) 相关下载地址(2) 安装3. Kotlin 命令行工具(1) 相关下载地址(2) 安装 Kotlin 命令行工具二. Hello World 工程1. 第一个 He...2017-09-05 21:52:471453
0