摘要:Job详解: 在上一次https://www.cnblogs.com/webor2006/p/11725866.html中抛出了一个问题: 所以咱们将delay去掉,需要改造一下,先把主线程的delay给注释掉: 那怎么做呢?这里先来看一下GlobalScope.launch()方法的返回值: 咱们
阅读全文
摘要:在上次我们是通过了这种方式来创建了一个协程: 接着再来看另一种创建协程的方式: 下面用它来实现上一次程序一样的效果,先来回顾一下上一次程序的代码: 好,下面改用runBlocking的方式: 运行一下: 其它的代码不用多解释,重点是这块: 好,对于咱们已经在用的协程相关的类下面来读一读它们官方的ja
阅读全文
摘要:Kotlin协程第一个示例剖析: 上一次https://www.cnblogs.com/webor2006/p/11712521.html已经对Kotlin中的协程有了理论化的了解了,这次则用代码来直观的感受一下协程,先用一个Hello World级别的示例来进行,这里新建一个工程: 默认的grad
阅读全文
摘要:在之前对Kotlin的反射进行了详细的学习,接下来进入一个全新的篇章,就是关于Koltin的协程【coroutine】,在正式撸码之前先对它有一个全面理论化的了解: 协程的定义: 协程通过将复杂性放入库中来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。 该库【协程是以
阅读全文
摘要:继续研究Kotlin反射相关的东东,看代码: 接下来则遍历函数,来调一下,比如咱们先来调用一下带有2个参数的method方法,可以这样写: 其实在调用实例方法时的第一个参数永远都是要调用的那个实例,也就是传说中的this,所以其实参数有一个隐藏的,修改程序如下就可以正常调用了: 好,要调用一个参数的
阅读全文
摘要:反射操纵伴生对象: 先定义一个伴生对象: 然后咱们通过反射来调用一下它: 比较简单。 反射操纵构造方法: 先来定义一个类: 然后咱们通过反射来调用一个其中的方法,之前当然就得先来调用构造方法,由于我们的主构造方法中已经有默认值了,所以创建对象时不需要传参数了,所以如下: 好,貌似木有去调带参数的构造
阅读全文
摘要:继续对反射进行实战。 获取构造方法: 先定义一个主构造方法,2个次构造方法,接下来咱们用反射来获取一下构造方法: 其结果: 其中有个细节需要注意: 居然在Kotlin中构造函数跟正常的函数都是KFunction,而在Java中构造函数是Constructor,而方法是Method,需要注意。 调用方
阅读全文
摘要:继续学习Kotlin反射,我们知道对于Java的反射类是Class,而在Kotlin中的反射类是KClass,而在Java当中对于反射中的方法是用Method,而在Kotlin中是用KFunction来表示的,如下: 而在Java中反射属性相关的会有一个Field来表示,而在Kotlin中也有一个与
阅读全文
摘要:继续还是探讨Kotlin反射相关的知识点,说实话这块不是太好理解,待在实际工作中去对它进行实践慢慢来加深印象。 属性引用进阶: 在Kotlin中的反射其实是跟Java的反射有对应关系的,具体相关的定义都放在下面这里: 下面来看一下: 下面看一下它的细节: 继续来看这种映射: 看一下细节: 由于是咱们
阅读全文
摘要:继续来学习Kotlin反射相关的,这次主要是跟反射属性相关的东东。 属性引用(Property Reference): 属性引用的用法与函数(方法)引用的用法是完全一致,都是通过::形式来引用的。下面看代码: 其实这个属性引用就类似于在Java反射属性的方式差不多,目的都是通过反射来操作属性的一些东
阅读全文
摘要:继续学习Kotlin反射相关的东东。 KClass: 在上一次是通过类来获取它的KClass对象: 那如果是一个对象呢?与这个对象对应的类的KClass对象又是如何获取的呢?像Java也是一样有相关机制的,下面看一下: 其实使用跟用类是一样的,那结果是啥呢?运行一下: 这样就打出来了具体类型了,由于
阅读全文
摘要:继续来研究Java调用Kotlin的一些东东。 @Throws注解: 我们知道在Kotlin中是不存在checked exception的,而在Java中是存在的,那。。如果从Java来调用Kotlin的角度那又是如何做到兼容的呢?下面写一个Kotlin代码: 接下来再用Java来调用此方法: 接下
阅读全文
摘要:@JvmName: 扩展方法相关: 先来定义一个扩展方法: 好,接下来再来定义一个扩展函数: 此时报错了。。看一下错误提示: 其中给的提示有点奇怪,第一个是很明显咱们的扩展函数木有接收参数嘛,为啥提示JVM签名是接收一个List参数呢?其实这里就涉及到了扩展函数的语义了,对于扩展函数来说,其实是将被
阅读全文
摘要:通过注解修改Kotlin的class文件名: 对于Kotlin文件在编译之后生成的class文件名默认是有一定规则的,比如: 而其实这个生成字节码的文件名称是可以被改的,之前https://www.cnblogs.com/webor2006/p/11530600.html也提及到,也就是可以用Jvm
阅读全文
摘要:异常: 在之前我们已经学习在Kotlin中的所有异常都是运行期的,而不像Java分为运行期和非运行期,下面用代码来演示一下,先建一个Java的异常: 然后在Kotlin中来调用一下该Java中的方法 很明显IOException在Java是需要检查的异常,然后在Kotlin中居然是不需要进行异常处理
阅读全文
摘要:在上一次https://www.cnblogs.com/webor2006/p/11530801.html中学习了Kotlin调用Java的使用方式及一些注意点,这次继续其这个场景进一步学习。 数组(Array): 下面先来看一下在Java中数组的情况: 但是!!如果这样写: 编译貌似没问题,但是!
阅读全文
摘要:Kotlin跟Java是百分百兼容的,换言之,也就是它们俩是可以互操作的,也就是Java可以调Kotlin,Koltin可以调Java,所以下面来看一下在Kotlin中如何来调用Java代码: 咱们来看一下这个ArrayList是Kotlin的么? 接下来往里面添加一些元素,并进行遍历: 接下来还可
阅读全文
摘要:在上一次https://www.cnblogs.com/webor2006/p/11522798.html中学习了Kotlin注解相关的东东,这次继续对Kotlin的注解继续学习: 注解也可以拥有自己的构造方法,并且构造方法也可以接收参数,注解构造方法所允许的参数类型: 1、与Java原生类型所对应
阅读全文
摘要:Kotlin异常与Java异常的区别: throw的Kotlin中是个表达式,这样我们可以将throw作为Elvis表达式【val test = aa ?: bb,这样的则为Elvis表达式,表示如果?前面的不为null则将前面的aa赋值给test,否则则执行?后面的赋值test】的一部分,下面看下
阅读全文
摘要:好用的集合扩展方法: 下面来看一下对于集合中好用的一些扩展方法,直接上代码: 如果我们想取出集合中的第一个值和最后一个值,用Java方式是get(0)和get(size-1),但是在Kotlin中提供有现成的方法,如下: 其中看一下它的定义,就是标准的扩展方法的定义: 另外如果想过滤元素在之前也已经
阅读全文