
Kotlin
文章平均质量分 73
NO Exception?
分享内容!
展开
-
kotlin 多态和扩展
1. 多态当我们用一个子类继承一个父类的时候。这就是子类型。另一个熟悉的多肽是参数多态也就是泛型。此外,C++的运算符重载叫特色多肽。用子类型替换超类型实例的行为就是我们通常说的子类型多肽。参数多态就是泛型1.1 对第三方类进行扩展假使当对应的业务类A和B是第三方引入的,且不可被修改时。如果我们想要给他扩展一些方法。比如将对象转化为json。利用之前介绍的多胎技术就显得比较麻烦。fun ClassA.toJson():String{}kotlin支持扩展的语法。利用扩展,我们就能给当前类原创 2022-05-23 22:26:58 · 468 阅读 · 0 评论 -
Kotlin泛型 总结
泛型:参数化类型,可以接收多种不同的类型,来达到代码的通用性。kotlin泛型和Java类似。优点:类型检查,能在编译时检查错误语义化,直观看到存在什么类型的数据自动类型转换代码的通用性class Box<T>(t: T) { var value = t}1.Java为什么不能声明一个泛型数组Apple[] appleArr =new Apple[10]Fruit[] fruitArray = appleArrfruitArray[0] = new Banan原创 2022-05-03 23:05:20 · 1744 阅读 · 0 评论 -
Kotlin 高阶函数和Lambda(总结)
Kotlin 函数都是头等的,这意味着它们可以存储在变量与数据结构中、作为参数传递给其他高阶函数以及从其他高阶函数返回。 /** * 方法内部定义局部方法 */ fun test1(){ fun testSub(value:Int):Int{ return value*3 } print("this is subMethod value=${testSub(4)}") }高阶函数是将函数用作参数原创 2022-05-03 17:37:20 · 1288 阅读 · 0 评论 -
Kotlin 反射--笔记
1.类引用kotlin是基于java1.6设计,完全兼容java,所以和java很多功能都是互通的。如java反射中Class对象,在Kotlin叫KClass对象。1.1 Class和KClassClass//在kotlin中获取Class对象class ReflectDemo(val x: Int = 0) { constructor() : this(0) { } fun test() { println(x) }}//获取Cl原创 2022-02-17 17:24:59 · 1648 阅读 · 0 评论 -
kotlin 密封类
密封类用来表示受限的类继承结构:当一个值为有限几种的类型、而不能有任何其他类型时。说白了就是固定的类继承结构,类似于枚举enum,但是enum只能有一个类型的实例对象。enum class Day { MON, TEU, WED, THU, FRI, SAT, SUN}要声明一个密封类,需要在类名前面添加 sealed 修饰符。虽然密封类也可以有子类,但是所有子类都必须在与密封类自身相同的文件中声明。(在 Kotlin 1.1 之前, 该规则原创 2022-01-25 20:24:47 · 312 阅读 · 0 评论 -
registerForActivityResult 代替 startActivityForResult讲解
1.背景startActivityForResult用于在两个Activity 回调数据,已经被废弃了。 /** * {@inheritDoc} * * @deprecated use * {@link #registerForActivityResult(ActivityResultContract, ActivityResultCallback)} * passing in a {@link StartActivityForResult} ob原创 2022-01-25 16:32:02 · 4220 阅读 · 0 评论 -
kotlin 高阶函数 代替 接口回调
1 Java的接口回调在Java当中,使用接口回调的形式传递数据很常见,定义接口,声明接口,在A类中传入接口的实例对象,就可以接收传入的数据index.而在kotlin中,比较简单,传入一个函数即可Bpublic class B { IUpdateListener iUpdateListener; public void setiUpdateListener(IUpdateListener iUpdateListener) { this.iUpdateListene原创 2021-12-24 11:20:01 · 2050 阅读 · 0 评论 -
run、let、with、 apply 、also区别
相同点:都返回一个lambda表达式 run方法的高阶函数为block: T.() -> R let方法的高阶函数为block: (T) -> R,T作为参数传入,所以it代码T对象,也就是A对象。apply也类似于run,高阶函数的作用域为当前接收者对象作用域,高阶函数无返回值,但是方法为返回值,为接收者对象。, 但是let不同,是通过it关键字才能执行test1()方法,这是最大的不同,也是唯一的不同的地方。it代码A对象,高阶函数的返回值还是A对象,所以后缀还可以调用test1()原创 2021-12-13 13:52:19 · 1952 阅读 · 0 评论 -
kotlin中withContext和async区别
withContext1.用于执行耗时任务,会切换线程2.多个withContext()执行,为串行,运行在同一个线程3.直接返回结果4.withConext是个 suspend 函数val task1 = withContext(Dispatchers.IO) {...}val task2 = withContext(Dispatchers.IO) {...}执行完task1,才会执行task2.async await()1.执行耗时任务,会切换线程2.但是可以并行3.使用aw原创 2021-12-03 19:33:56 · 3806 阅读 · 0 评论 -
Kotlin 委托和委托属性 By
1、委托在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托实现Derived 类可以通过将其所有公有成员都委托给指定对象来实现一个接口 Base:Derived 的超类型列表中的 by-子句表示 b 将会在 Derived 中内部存储, 并且编译器将生成转发给 b 的所有 Base 的方法。interface Base { fun print()}class BaseImpl(val x: Int) : Base { override原创 2021-10-25 16:55:44 · 327 阅读 · 0 评论 -
Kotlin 属性字段 及幕后字段、幕后属性
1. 属性2.幕后字段3.幕后属性原创 2021-10-23 18:58:57 · 1350 阅读 · 0 评论 -
3.Kotlin_协程_note_1
轻量级线程、delay 挂起函数,不造成阻塞,会挂起协程,只能在协程里用runBlocking 阻塞join 等待执行完毕suspendrepeatrunBlocking 与 coroutineScope 可能看起来很类似,因为它们都会等待其协程体以及所有⼦协程结束。主要区别在于,runBlocking ⽅法会阻塞当前线程来等待,⽽ coroutineScope 只是挂起,会释放底层线程⽤于其他⽤途。1.全局协程(GlobalScope)像守护线程GlobalScope.launch {原创 2021-10-16 17:53:41 · 667 阅读 · 0 评论 -
2.Kotlin_集合_note
List 是一个有序集合,可通过索引(反映元素位置的整数)访问元素。元素可以在 list 中出现多次。列表的一个示例是一句话:有一组字、这些字的顺序很重要并且字可以重复。Set 是唯一元素的集合。它反映了集合(set)的数学抽象:一组无重复的对象。一般来说 set 中元素的顺序并不重要。例如,字母表是字母的集合(set)。Map(或者字典)是一组键值对。键是唯一的,每个键都刚好映射到一个值。值可以重复。map 对于存储对象之间的逻辑连接非常有用,例如,员工的 ID 与员工的位置。注意:1.更改可变集原创 2021-10-21 09:43:40 · 664 阅读 · 0 评论 -
1.Kotlin_基础语法_note
1.序列除集合外 还有一种容器 Sequenec元素val n = sequenecof(“one”,“two”)Iterable如果已经有一个iterable对象,可以调用asSequence()val num = listof(“one”,“two”)val numsequ = num.asSequnce();函数???首次1执行,返回的结果+2再次执行val oddNumbers = generateSequence(1) { it + 2 } // it 是上⼀个元素print原创 2021-08-24 16:37:57 · 436 阅读 · 0 评论