Kotlin
Kotlin
门心叼龙
早年从事asp,java开发,后随着移动互联网热潮开始北漂,转战Android开发,10多年软件行业从业经验,热爱技术,崇尚开源,在github开源了多个项目,累计收获近5k stars,曾在北京九五智驾等公司任职,擅长企业应用架构和设计,领导过多个企业级应用的架构设计和开发工作
展开
-
Kotlin协程视频教程,极简入门与解密
Kotlin协程极简入门与解密视频教程已经发布到CSDN学院:https://edu.csdn.net/course/detail/31728Kotlin作为目前最为流行的编程语言之一,学Kotlin的同学们都被Kotlin的简洁的语法和它强大函数式编程所折服,但是学习Kotlin总会有一个绕不开的话题就是“协程”,它已经成了目前Kotlin学习中的一个网红话题,很多文章都在讲协程,有人讲它是来替代线程的,有人讲他就是类似Java中Executors,是一个线程管理框架仅此而已,是这样的吗?那么通过本视原创 2021-01-30 10:55:56 · 704 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十八):与Java的较量
文章目录数据实体类接口变量懒汉式单例构造方法情况1情况2lambda的应用无参数有参数加法作为函数参数匿名函数闭包学习交流在Java当中一些常量通常情况下都是定义在接口当中,默认情况下所有的成员变量都是public static final类型的,所有的方法都是public abstract类型的,而在Kotlin中的接口是不允许定义常量的,但是我们可以通过伴生对象companion objec...原创 2020-02-27 19:34:35 · 6578 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十七):DSL的简单应用
文章目录1.原始方式2. 空适配器模式3. 高阶函数方式4. DSL方式学习交流当接口的方法过多,而我们只需要其中一个方法时,例如TextView.addTextChangedListener,我们只需要它的onTextChanged方法时1.原始方式tv.addTextChangedListener(object : TextWatcher { override fun after...原创 2020-02-27 16:50:43 · 4407 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十六):DSL原理解析
DSL(领域特定语言)是Kotlin所带来的强大语法特性之一,也是Java中所不存在的功能,JetBrain也基于DSL开发出了众多的开源库,Kotlin的开发者可以使用DSL来重构许多已有的代码,甚至有可能做到彻底抛弃HTML,XML,SQL等代码的地步。现代编程语言已经越来越向自然语言靠拢,因此学习使用一个语法特性并非难事,所以本文将延续本专题的风格:“理论先行”,重点在于详细讲解DSL在K...原创 2020-02-27 16:23:47 · 7311 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十四):inline内联函数
inline 的工作原理就是将内联函数的函数体复制到调用处实现内联方法调用流程调用一个方法是一个压栈和出栈的过程,调用方法时将栈针压入方法栈,然后执行方法体,方法结束时将栈针出栈,这个压栈和出栈的过程会耗费资源,这个过程中传递形参也会耗费资源。为什么需要inline有些简单的方法会被频繁调用,什么叫简单的方法呢,举个例子:fun <T> check(lock: Lock,...原创 2020-02-27 15:42:43 · 6474 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十三):协程
文章目录什么是协程?使用1.runBlocking:T2.launch:Joblaunch方法源码解析1.协程下上文2.启动模式2.协程体3.async应用1.首先定义一个请求相关的支持DSL语法的接收者。2.然后给协程定义一个扩展方法,用于Retrofit网络请求。3.最后一步,让BaseActivity实现接口CoroutineScope,这样在页面中的上下文就是协程下上文什么是协程?官...原创 2020-02-26 18:23:42 · 7061 阅读 · 2 评论 -
Kotlin-简约之美-进阶篇(十二):闭包
文章目录什么是闭包闭包的作用普通函数和闭包函数闭包总结学习交流什么是闭包闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。闭包的作用任何支持函数式编程的语言都都支持闭包。让函数成为编程语言中的一等公民让函数具有对象所有的能力(封...原创 2020-02-23 17:20:59 · 4408 阅读 · 1 评论 -
Kotlin-简约之美-进阶篇(十一):高阶函数
Lambda是什么在讲高阶函数之前,必须要明白什么是Lambda,简单来讲,Lambda是一种函数的表示方式(言外之意也就是说一个Lambda表达式等于一个函数)。更确切的说:Lambda是一个未声明的函数,会以表达式的形式传递为什么要用Lambda设想一下,在Android中实现一个View的点击事件,可以使用如下实现:View view = findViewById(R.id.text...原创 2020-02-23 12:05:33 · 4129 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(十):扩展函数和扩展属性
文章目录扩展函数和扩展属性的实现为什么要用扩展函数和扩展属性学习交流扩展函数给本来单薄的类添加了许多功能,今天我们来详细看一下扩展函数和扩展属性到底是什么,应该怎么用。扩展函数和扩展属性的实现我们都知道,Java 中,只有一个类型的成员属性和成员方法才能用“对象.属性 / 方法()”的方式调用,一个类型的对象是绝对不可能通过这种方法调用其他类里定义的方法(除非存在继承或实现关系)。而 Kot...原创 2020-02-22 23:35:20 · 4166 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(九):泛型
文章目录泛型类泛型方法生产者与消费者声明处型变学习交流Kotlin 的泛型与 Java 一样,都是一种语法糖,只在源代码里出现,编译时会进行简单的字符串替换。泛型(Generics)其实就是把类型参数化,真正的名字叫做 类型参数,它给强类型编程语言加入了更强的灵活性。在 Java 中,只要是有类型的 API 元素,都可以泛型化,也就是泛型类、泛型接口、泛型方法和泛型属性,泛型类和泛型接口可以统称...原创 2020-02-22 23:28:55 · 6506 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(八):@JvmOverloads 注解
在Kotlin中@JvmOverloads注解的作用就是:在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。可能还是云里雾里,直接上代码,代码解释一切:如果我们再kotlin中写如下代码:·fun f(a: String, b: Int = 0, c: String="abc"){ ...}相当于在Java中声明void f(Str...原创 2020-02-20 21:31:53 · 4172 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(七):主构造方法和次构造方法
文章目录Primary ConstructorSecondary Constructor学习交流Kotlin的构造函数分为主构造器(primary constructor)和次级构造器(secondary constructor),下面我们来看看他们的写法。Primary Constructor写法一:class 类名 constructor(形参1, 形参2, 形参3){}clas...原创 2020-02-20 21:23:35 · 6793 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(六):延迟初始化lateinit var和by lazy
Koltin中属性在声明的同时也要求要被初始化,否则会报错。 例如以下代码:private var name0: String //报错private var name1: String = "xiaoming" //不报错private var name2: String? = null //不报错可是有的时候,我并不想声明一个类型可空的对象,而且我也没办法在对象一声明的时候就为它初始...原创 2020-02-20 10:45:39 · 5771 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(五):object关键字使用详解
文章目录对象声明(Object Declaration)伴生对象(Companion object)对象表达式(Object Expression)对比object declaration、Companion object以及object expression的初始化时机object是Kotlin中的一个重要的关键字,也是Java中没有的。object主要有以下三种使用场景:对象声明(Objec...原创 2020-02-19 12:36:40 · 6627 阅读 · 1 评论 -
Kotlin-简约之美-进阶篇(四):访问权限控制
默认的访问修饰符在Kotlin世界中,无任何修饰的class、方法,等等默认就是public的,所以是隐式的public的classclass MyActivity {}public 的方法fun methord() {}public 的变量var temp: String? = nullpublic的构造方法constructor() : super(...原创 2020-02-18 22:46:33 · 8116 阅读 · 1 评论 -
Kotlin-简约之美-进阶篇(三):Lambda的使用详解
文章目录Lambda介绍Lambda的使用Lambda表达式的特点Lambda语法实例讲解:Lambda实践it下划线(_)匿名函数带接收者的函数字面值闭包android实战Lambda语法在Java中已经被广泛的运用,我们在开发Android中几乎上每一个项目也会在项目中接入Lambda插件,因为Lambda确实能简少很多的代码量。无独有偶,在Kotlin中也是支持Lambda语法的,在这篇文...原创 2020-02-11 12:04:34 · 5801 阅读 · 0 评论 -
Kotlin-简约之美-进阶篇(一):null安全
文章目录变量类型声明Non-Null变量声明Nullable变量Non-Null变量赋值判断赋值使用“!!”赋值Nullable变量的使用“?”符号的使用“?:”符号的使用在Java开发中,null一直是个大问题,哪怕我们再小心,也难免有疏忽的时候,Kotlin针对这个问题做了一些措施。变量类型Kotlin将变量分为可以为Nullable类型 Non-Null类型,变量在声明时就要确定属于哪...原创 2020-02-11 09:59:51 · 5036 阅读 · 0 评论 -
Kotlin-简约之美-基础篇(五):data类和enum类
enum类与java不同,Kotlin中enum当做class的修饰符使用1.常见用法:enum class Direction { NORTH, SOUTH, WEST, EAST}2.有成员属性时:enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x...原创 2020-02-10 11:55:21 · 5444 阅读 · 0 评论 -
Kotlin-简约之美-基础篇(四):类与继承
文章目录类的创建主构造方法次构造方法继承方法重写成员变量重写调用父类方法和成员变量类的创建与Java一样,Kotlin也是用class关键字声明类。classUser{}Kotlin中一个类可以有一个主构造方法(primary constructor)和一个或多个次构造方法( secondary constructors)。主构造方法主构造方法通过在类名后面添加constructor和...原创 2020-02-10 11:04:11 · 8618 阅读 · 0 评论 -
Kotlin-简约之美-基础篇(三):基本控制语句
文章目录if,elsewhenforwhilebreak & continueif,else与Java的相同点Kotlin中的if,else可以像Java一样使用:fun method(num: Int) { if (num > 100) { print(">100") } else if (num > 80) { ...原创 2020-02-10 10:01:26 · 10757 阅读 · 0 评论 -
Kotlin-简约之美-基础篇(二):方法的定义和使用
文章目录方法定义定义语法:有返回值无返回值成员方法静态方法顶级方法方法调用顺序可变命名参数可变参数方法定义定义语法:fun [方法名] ( [参数名] : [参数类型] ) : [返回类型]{ ... return [返回值]}有返回值fun multiply(x: Int, y:Int): Int { return x * y}也可以转换为:fun...原创 2020-02-09 21:14:09 · 8616 阅读 · 0 评论 -
Kotlin-简约之美-基础篇(一):变量的声明和使用
文章目录变量声明只读变量易变变量成员变量静态变量顶级变量Getters and SettersVisibility Modifiers变量声明只读变量可理解为Java中常量,使用 val 关键字修饰val a: Int = 1 //在声明的时候直接赋值val b = 2 // 类型是明确的,变量类型Int可省去val c: Int // 在声明时没有赋值,变量类型Int不可省去...原创 2020-02-09 19:58:56 · 11012 阅读 · 0 评论