
Kotlin
文章平均质量分 66
not coder
贪财好色,一身正气
展开
-
Kotlin 的几个常用标准函数
kotlin 的标准函数指的是 Standard.kt 文件中定义的函数,任何 Kotlin 代码都可以自由的调用标准函数letlet 配合 ?. 来使用进行判空辅助,表示如果目标变量不为空,则执行括号中的内容val str: String? = "abc"str?.let{ -> it it.toString()}withwith 同时接收两个参数,第一个参数可以是任意类型的对象,第二个参数是一个 Lambda 表达式with 函数会中 Lambda 表达式中提供第一个参数对象原创 2021-10-06 18:55:55 · 318 阅读 · 0 评论 -
kotlin中ExpandableListView无法设置adapter?
很长时间没有使用 ExpandableListView 了,kotlin 也上手使用了很长时间,前几天业务重构时候,想使用 ExpandableListView 来实现新的展开模式,但是却发现没法给 ExpandableListView 设置适配器了,一度怀疑是 Android 源码出 bug 了,时隔多年,又在作什么妖众所周知,ExpandableListView 的 adapter 需要继承 BaseExpandableListAdapter,并实现其中的一大坨方法但是我们给 ExpandableL原创 2021-08-18 14:44:40 · 460 阅读 · 0 评论 -
Kotlin之集合的函数式API(Lambda)
集合的函数式 API 有很多种,我们只重点学习函数式 API 的结构,也就是 Lambda 表达式的语法结构要求:在集合中找出名字最长的那个值:fun main() { val list = listOf("a", "ab", "abc", "bc") var maxLength = "" for (name in list) { if (name.length > maxLength.length) { maxLength = na原创 2020-06-18 18:29:04 · 368 阅读 · 0 评论 -
Kotlin之集合的创建
许多现代高级语言在很早之前就开始支持Lambda编程,但是Java到JDK 1.8之后才开始支持,导致大量早期Java和Android开发并未使用Lambda编程的特性而Kotlin从第一个版本就开始了对Lambda的支持,并且Kotlin中的Lambda极为强大,我们从本章开始来进行Lambda的入门集合的创建与遍历集合的函数式API是用来入门Lambda的绝佳示例传统意义上的集合主要是List和Set,再广泛的话Map这样包括键值对的也可以包含进来List的主要实现类是ArrayList和Li原创 2020-06-18 14:48:43 · 1616 阅读 · 0 评论 -
Kotlin之数据类和单例类
Kotlin中特有的几个知识点数据类在一个规范的系统架构中,数据类通常占据着非常重要的角色,用于将服务器或者数据库中的数据映射到内存当中,为编程逻辑提供数据模型支持数据类通常要重写equals()、hashCode()、toString()这几个方法. equals()用来判断是否相等. hashCode()作为equals()配套方法,也需要一起重写,否则会导致HashMap、HashSet、等hash相关的系统类无法正常工作. toString()方法用来提供更详细的日志,否则只会打印出来内存地址原创 2020-06-17 10:47:20 · 758 阅读 · 0 评论 -
Kotlin之接口
接口是用于实现多态编程的重要组成部分Kotlin与Java一样,单继承多实现,我们可以在接口中定义一些抽象方法,任何由具体的类去实现创建Study接口,并添加几个相关函数:interface Study { fun readBook() fun doHomeWork()}让Student去实现Study接口:class Student(name: String, age: Int) : Person(name, age), Study { override fun re原创 2020-06-16 17:25:33 · 238 阅读 · 0 评论 -
kotlin之次构造函数
任何一个类只能有一个主构造函数,但是可以有多个次构造函数,次构造函数也可以用于实例化一个类,这一点和主构造函数没有什么不同,只不过他是有函数体的kotlin规定:当一个类既有主构造函数又有次构造函数时,所有的次构造函数都必须调用主构造函数(包括间接调用):class Student(val sno: String, val grade: Int, name: String, age: Int) : Person(name, age) { constructor(name: String, ag原创 2020-06-16 14:12:53 · 3347 阅读 · 1 评论 -
kotlin之主构造函数
任何一个面向对象编程的语言都会有构造函数的概念,kotlin中也有,但是kotlin将构造函数分为了两种:主构造函数和次构造函数主构造函数将会是最常用的构造函数,每个类默认会有一个不带参数的构造函数,当然也可以给他指明参数,主构造函数的特点是没有函数体,直接定义在类名后面即可:class Student(val sno: String, val grade: Int) : Person() {}这表明我们在实例化这个类的时候必须传入构造方法中要求的所有参数:val student = Stude原创 2020-06-16 10:35:06 · 2415 阅读 · 3 评论 -
kotlin之继承
创建Student.kt类,添加sno和grade字段class Student { var sno = "" var grade = 0}继承Person,首先,之前创建的Person是不可被继承的,如果想继承,需要做两件事情才行使Person变成可继承,在Java中,类本身就可被继承,kotlin中任何一个非抽象类默认都是不可被继承的,这点跟val的存在类似,一个类如果被继承,那么他无法预知子类会如何实现,可能产生一些未知风险. Effective Java中提到,如果一个类原创 2020-06-16 10:29:11 · 434 阅读 · 0 评论 -
kotlin之类与对象
新建一个kotlin类,在创建的时候第一个选项是File,File通常是用来编写Kotlin的顶层函数和拓展函数的,我们切换成Class我们选中Class,创建一个Person类class Person {}kotlin和Java一样,使用class来修饰一个类,我们加入name和age字段,以及eat()方法class Person { var name = "" var age = 0 fun eat() { println("$name i原创 2020-06-15 15:56:49 · 196 阅读 · 0 评论 -
kotlin之循环语句:for
kotlin中的while循环无论是在语法和使用方式上都和Java中的没有任何区别,因此不做讲解,我们直接来看for循环kotlin中将for-i循环直接舍弃了,对Java中的另一种for-each循环进行了大幅度的加强,变成了for-in循环,所以只需要学习for-in的用法就可以了区间的概念使用如下代码来表示一个区间:val range = 0..10上述代码表示创建了一个0到10的区间,并且两端都是闭区间[0,10]其中**…是创建两端都是闭区间的关键字**,有了区间之后就可以通过for原创 2020-06-15 14:59:50 · 1584 阅读 · 1 评论 -
Kotlin之逻辑控制:when
逻辑控制:顺序、条件、循环条件语句when条件语句kotlin中的when类似于Java中的switch,但是又远比switch强大的多先说一下Java中switch的问题:只能传入整型或者短于整型的变量作为条件,JDK1.7之后增加了对字符串的支持每一条判断语句都要在最后主动加上一个break,否则会执行下一个case,当然这也有利有弊,可以利用这种特性实现一些功能,但是在维护的过程中很容易出问题kotlin中的when不仅仅解决了上述的痛点,还增加了许多强大的新特性编写一个成原创 2020-06-13 16:52:41 · 1762 阅读 · 0 评论 -
Kotlin之逻辑控制:if
逻辑控制:顺序、条件、循环条件语句if条件语句kotlin中if语句与Java中的if几乎没有任何区别例:fun numberTest(a: Int, b: Int): Int { var value = 0 if (a > b) { value = a } else { value = b } return value}相比较Java的额外功能,他可以有返回值比如之上的方法写完之后,编译器会给出警告提示:Ass原创 2020-06-13 16:51:20 · 765 阅读 · 0 评论 -
Kotlin之函数
函数和方法指的是同一个东西语法规则fun(function的简写)是定义函数的关键字,无论定义什么函数,都需要用fun来声明fun后面是方法名,可以随意起,但是编码规范要求最好有一定的意义,能知道这个方法是干什么的方法名后面是一个括号,里面声明该函数接收什么参数,参数的数量是任意多个用逗号隔开,参数格式是 参数名:参数类型,其中参数名和方法名类似,可以随便定义。如果不接收任何参数,则只保留空括号即可括号后面是可选的,用于声明该函数返回什么样类型的数据,格式为:参数类型,如果不返回任何数据,则不写原创 2020-06-03 20:03:36 · 554 阅读 · 0 评论 -
kotlin之变量
kotlin只允许在变量前面声明两种关键字:val或者varval:(value的简写)用来声明一种值,这种值在赋值之后不可改变,对应Java中的final(这不是常量吗…)var:(variable的简写),声明变量类型推导机制既然在变量前只允许声明两种关键字,那么他怎么知道这是什么类型呢?比如我们在刚刚的代码上加入一行:var a = 10package com.example.testfun main() { var a = 1 print("hello world!原创 2020-06-03 14:28:06 · 700 阅读 · 0 评论 -
kotlin之运行kotlin代码
如何独立运行一段kotlin代码首先,最直接的方式当然是下载JetBrains的自家旗舰IntelliJ IDEA了,但是这需要下载IDE,以后我们也用不到,所以先放弃。第二种是JetBrains提供了在线运行kotlin代码的网站,但是国内网络访问非常慢,经常打不开,这种也放弃。第三种,因为我们是做Android开发,那我们就使用Android Studio,虽然AS作为专门开发Android程序的工具,只能创建Android项目,不能创建kotlin项目,但是我们可以随便打开一个Android项目原创 2020-06-03 14:25:30 · 849 阅读 · 0 评论 -
kotlin之kotlin简介
简介kotlin是JetBrains公司设计与开发的,在2011年公布了第一个版本,在2012年开源,2016年发布了1.0正式版,并在JetBrains的自家旗舰IntelliJ IDEA中增加对kotlin支持。2017年Google宣布Kotlin正式成为Android一级开发语言,2019年Google宣布Kotlin为Android第一开发语言。为什么Kotlin能代替Java且和Java相互调用?编译型语言和解释型语言编程语言大致可以分成两种:编译型语言和解释型语言编译型语言:需要先原创 2020-06-02 15:09:26 · 896 阅读 · 0 评论