[kotlin]
手艺人王学明
岁月本长,而忙者自促,天地本宽,而鄙者自隘
展开
-
都掌握了吗?Kotlin技能小成
前些文章描述了 Kotlin教程,包括一些基本语法。很多时候,还需要加以练习。本文将开发过程中,遇到的点,整理成线,继而到面希望 把下面的问题掌握之后,掌握Kotlin在Android中的开发能力1️⃣实现findViewById有几种方式?方法一:可以更低成本从java转kotlin@BindView(R2.id.acco_refresh_layout)lateinit va...原创 2019-10-24 16:41:52 · 4905 阅读 · 0 评论 -
kotlin-let,run,with,apply,also作用域函数详解
前言五个作用域,会比较长。这篇文章,类似于字典。查查。用用。主要需要了解的点① 有什么区别?② 如何选择?作用域函数是什么意思呢通过编译器的手段增加一些操作符,使代码变得更简洁所以,你不用它也完全可以实现相同的功能。它提供了一个临时作用域,让对象执行代码块的 代码看起来更简洁感受一下 作用域函数 带来的代码整洁data class Person(var name: S...原创 2019-10-12 16:29:35 · 838 阅读 · 0 评论 -
kotlin - let,run,with,apply,also作用域函数的区别
两个主要区别上下文对象用this 还是 it返回值上下文对象用this 还是 itthis和it是作用域函数获取对象引用的 短名称, 两者都提供相同的功能使用this的情况范围函数: run,with,apply 使用this在大多数情况下,this访问接收器对象的成员时可以省略,从而使代码更短比如这个例子就是省略了thisdata class Person(v...原创 2019-10-12 16:17:14 · 962 阅读 · 0 评论 -
Kotlin-反射看这篇就够了
前言获取静态已知Kotlin类的引用使用::classval c = MyClass::class若要获得 Java 类引用, 需在 KClass 实例上使用 .java 属性val c = MyClass::classc.java通过已有的对象获取类的引用也是用::class获取val widget: Widget = ……assert(widget is Go...原创 2019-10-12 16:00:28 · 6274 阅读 · 0 评论 -
Kotlin进阶-注解(与java有点变化)
前言有些定义总是需要注解去实现的。本文需要带着几个问题① 怎么定义Kotlin的注解② 注解类的属性有几种,什么用途③ 可以在哪些地方用注解④ 与java注解怎么交互⑤ 文中小思:为什么kotlin与java交互,要用到KClass,然后转换成java的class注解声明简介要定义一个注解类,需要将 annotation 修饰符放在类的前面annotation class...原创 2019-10-12 15:45:55 · 755 阅读 · 0 评论 -
Kotlin入门-解决8个问题,就解决了 委托
前言目录如下简介所谓委托类委托属性委托标准委托把属性储存在映射中Not Null局部委托属性属性委托要求小结简介Kotlin 直接支持委托模式,更加优雅,简洁;Kotlin 通过关键字 by 实现委托所谓委托就是在原来调用的对象上,包了一层通过 包裹层调用 原来的对象是 实现继承的一个很好的替代方法类委托这有3个部分interface...原创 2019-10-08 16:32:39 · 898 阅读 · 0 评论 -
Kotlin入门-似曾相识的泛型
前言在Kotlin中,总的来说,可以理解泛型为:①向上解决类型不通用②向下解决类型限定如果看着累,建议先看小结,寥寥几字,大致了解下。本节的目录结构是这样的泛型说明型变类型投影泛型函数泛型约束类型擦除泛型说明Kotlin的泛型,功能与 Java 一样看一个范例fun main(args: Array<String>) { val age =...原创 2019-10-09 09:49:22 · 319 阅读 · 0 评论 -
Kotlin-集合
前言集合是一个大头,经常会碰到。所以,我做了一个集锦。看起来会比较长,所以,我做了一些取舍。尽量缩短,又可以了解清楚。这部分的内容,大部分语言都会涉及。有些地方就不放开详述。文章定位你可以大体了解有哪些。大致怎么用。用到的时候,完全可以查一下就知道了。目录如下set、list以及map创建迭代器序列化处理过滤集合的加减分组取集合的一部分取单个元素排序聚合操作...原创 2019-10-09 16:46:54 · 768 阅读 · 0 评论 -
5招鲜-Kotlin这样处理NPE
前言相传NPE值十亿美金。哇~那是好多????Kotlin为何这么?????号称解决了NPE呢?① NPE从哪里来② Kotlin从哪几个方面解决了NPE③ Kotlin到底解决了什么?④ 在什么时候,Kotlin的NPE解决方案是失灵的?NPE的来源有四个来源显式调用 throw NullPointerException()使用了 !! 操作符这是Kotlin提供的用户可强制抛...原创 2019-10-10 11:57:02 · 633 阅读 · 0 评论 -
Kotlin-讲解 实验性API
前言在编码过程中,编辑未开发完成的API,倘若需要使用它,Kotlin提供了实验性API进行提示,在使用后,会提示warnings或编译报错。声明自定义的API怎么进行定义声明呢?看个范例// library code@Experimental@Retention(AnnotationRetention.BINARY)@Target(AnnotationTarget.CLASS...原创 2019-10-10 16:34:32 · 1038 阅读 · 0 评论 -
Kotlin-this略有不同
前言在Kotlin中的this相对java略有不同,主要是多了label的使用。我们来看一下作用域在默认情况下this指向 最内层的包含它的作用域引用其他作用域中的 this需要用到label标签,指向label所在的作用域来看个范例class A { // 隐式标签 @A inner class B { // 隐式标签 @B fun Int.foo()...原创 2019-10-10 16:44:42 · 1734 阅读 · 0 评论 -
Kotlin-多变的类型_检测与转换
前言本文需要找几个问题。① 什么时候会产生类型安全问题?② 智能转换在什么时候是支持的③ 如何规避类型安全问题什么是类型安全经过类型擦除后,依旧可以通过检测,确保当前的变量类型是确定的某个类型类型检测:is会用到两个操作符is!is类型转换:asval myType as Date智能转换在许多情况下,不需要在 Kotlin 中使用显式转换操作符,因为编译...原创 2019-10-10 17:06:38 · 659 阅读 · 0 评论 -
Kotlin入门-嗯,我有别名,什么名称都变短
自kotlin 1.1起,类型别名(Type alias)为现有类型提供替代名称,如果类型名称太长,可引入较短别名替代原类型名!为集合类型(collection type)提供别名://缩短较长泛型类型(generic type)是很有吸引力的typealias NodeSet = Set<Network.Node>typealias FileTable<K>...原创 2019-10-08 15:34:44 · 373 阅读 · 0 评论 -
Kotlin入门-带着问题,理解 对象表达式和对象声明
前言作用Kotlin的对象表达式,再一次简化了,对某个类做轻微改动时,且不需要去声明一个新的子类。对象表达式通过匿名内部类与java一样,或继承、或实现、或通过构造函数传值给其参数。匿名对象只在本地和私有作用域中声明范例一window.addMouseListener(object : MouseAdapter() { override fun mouseClicke...原创 2019-10-08 15:18:55 · 331 阅读 · 0 评论 -
Kotlin入门-被简化的 枚举类(与java的差异)
前言基本上Java是一样的。下面的几个点java也都提供它实现一个类型安全的枚举。总体上说,Kotlin的枚举跟Java的枚举是基本相同的。差异主要在代码量上。初始化无参数的枚举类型enum class Color{ RED,BLACK,BLUE,GREEN,WHITE}我们再来看下java的实现。public enum Color { RED,BLACK,...原创 2019-10-08 11:16:41 · 713 阅读 · 0 评论 -
Kotlin入门-与java的差异【入门级】
基本类型KotlinJava基本类型万物皆对象,基本类型也是对象基本类型不是对象原创 2019-09-26 11:34:46 · 255 阅读 · 0 评论 -
Kotlin入门-万物皆对象,基础类型
Kotlin说:万物皆对象。可以说,Kotlin全面的接管了所有类型。一统天下。基本类型有5种数字整数浮点数字符布尔值数组字符串本文,我们将一个个讲解数字数字包括 整数和浮点型整数类型大小限制Byte8位Short16位Int32位所有不超过Int最大值的整数型初始化变量都被推断为IntLong64位...原创 2019-09-26 14:05:22 · 767 阅读 · 0 评论 -
Kotlin入门-更灵活的条件控制
Kotlin的条件控制更加灵活有以下几个方面if…elsex…ywhenif…else先看一个范例val max = if (a > b) { print("Choose a") a} else { print("Choose b") b}直接赋值给变量➕var的定义,给人一种javascript的感觉。其实大体跟java是一样的...原创 2019-09-26 14:41:24 · 243 阅读 · 0 评论 -
Kotlin入门-label升级循环控制的自由跳动
Kotlin简化了 条件判断,同样也简化了 循环判断。本节有5个部分For循环while与do…while循环返回和跳转break和continue标签for循环支持几种类型iterator迭代器(java也有)for (item: Int in ints) { // ……}索引遍历。类似for(int i = 0; i < sum; i ++...原创 2019-09-26 16:03:12 · 439 阅读 · 0 评论 -
Kotlin入门-被拆分了实例化,类与构造函数篇
前言Kotlin简化了结构体的编码工作量。因此,引入了主\次构造函数。主构造函数:减少了编码的工作量。次构造函数:提供了多态的特性,同样的,也提供了java中可以定义多个结构体本文从以下几个方面来看包与导入构造函数 //敲黑板,这块莫名的感觉有趣主构造函数次构造函数创建类的实例包与导入这部分基本与java一样要注意 导入部分。支持导入包的别名import o...原创 2019-09-27 10:29:59 · 556 阅读 · 0 评论 -
Kotlin入门-父子身份更分明,继承篇
前言前文讲到,Kotlin中万物皆对象,连基础数值类型都不放过。本文从以下几个方面讲继承根是Any类构造函数重写方法重写属性中场小结派生类初始化顺序调用超类实现super覆盖规则根是Any类首先,Any 不是 java.lang.Object。在Kotlin中,Any是所有类的超类如果没有显式声明超类型声明的类,其默认的超类是AnyAny 默认提供了三个函数...原创 2019-09-27 12:21:09 · 784 阅读 · 1 评论 -
Kotlin入门-必会,属性篇
前言本文从以下几个方面进行阐述定义getter和settervarvalgetter和setter方法的权限注意幕后字段什么时候没有field字段?幕后属性定义对于 JVM 平台幕后字段与幕后属性的区别编译期常量延迟初始化属性与变量解决办法适用范围注意检测一个 lateinit var 是否已初始化(自 1.2 起)覆盖属性委托...原创 2019-09-27 15:02:33 · 1402 阅读 · 0 评论 -
Kotlin入门-必会,接口
前言Kotlin的继承基本上跟java的类似。Kotlin强化了接口实现接口的逻辑。可以更清晰的呈现 每个接口类的描述。定义使用 interface 定义范例interface MyInterface { fun bar() // 未实现 fun foo() { //已实现 // 可选的方法体 println("foo") }...原创 2019-09-27 15:17:05 · 323 阅读 · 0 评论 -
Kotlin入门-程序员的福利,扩展篇
目录定义扩展函数扩展函数是静态解析的可空接收者扩展属性伴生对象的扩展扩展的作用域扩展声明为成员定义Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。比如说为第三方库中无法修改的类编写 新function,新function就如同该类原来就存在的函数一般使用。也可以为第三方类扩展一些新的属性扩展函数可以在已有类中添加新的方法,不...原创 2019-09-30 23:57:36 · 296 阅读 · 0 评论 -
Kotlin入门-数据类与密封类 的解脱,由繁至简
前言今天是十一的大好日子,可惜好多网站不让用了。在Kotlin中,数据类大大减少了实体类的代码量;这篇文章的目录如下数据类简述密封类小结数据类这简直就是完美解决了java中,一个数据类动不动就是一堆代码的窘境。在Kotlin中,只要一行就可以解决问题。简直便利极了。在java中,为了解决getter & setter这种实现,特意引入了lombok。或者...原创 2019-10-01 22:08:20 · 328 阅读 · 0 评论 -
Kotlin入门-没有分号是个有趣的事情
前言第一眼看Kotlin的示例代码,突然发现没有分号。这个事情就值得商榷了看两个范例范例一fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}范例二fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}...原创 2019-10-01 22:39:23 · 1425 阅读 · 2 评论 -
Kotlin教程,从入门到精通
前言Kotlin现在已经更新至1.3.后续,也将以1.3版本进行讲解。围绕 What(是什么)、How(怎么用)、Difference(与java的区别)、Intent(意图是什么)四个方面来阐述。产物:Kotlin整理后的Xmind(更新在github上)目录结构[基础篇]基本类型...原创 2019-09-26 11:08:11 · 1723 阅读 · 1 评论