
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
为了满足kotlin编译器的需求,Kotlin代码中存在大量的判空场景。如下述场景,adapter初始赋值为null,后续在onCreate()周期里赋值,在触发点击事件的时候adapter肯定不为null,但为了满足Kotlin编译器要求,还是要进行?.判断基于上述场景提出延迟初始化的概念,在定义的时候使用lateinit关键字告诉kotlin编译器,晚些时候对这个变量再进行初始化,这样在一开始
不过,我们却可以先将Kotlin代码转换成Kotlin字节码,然后再通过反编译的方式将它还原成 Java代码。如果想要将这段代码转换成Kotlin版本,其实非常简单,只需要复制这段代码,然后在Android Studio中打开任意一个Kotlin文件,在这里进行粘贴。Android Studio虽然能够帮助我们进行一键代码转换,但是它只会按照固定的 语法变化规律来执行转换工作,而不会自动应用Kot
这里我们需要将新增的两个参数 都设置成可为空的类型,并将默认值都设置成空,然后只有当两个参数都不为空的时候,我们 才去调用Snackbar的setAction()方法来设置额外的点击事件。另外, Snackbar和Toast类似,显示的内容也是支持传入字符串和字符串资源id两种类型的,因此这 里我们给showSnackbar()函数进行了两种参数类型的函数重载。这样我们之前所使用的showToas
静态方法也叫类方法,是指不需要创建实例就能调用的方法,静态方法非常适合一些工具类的编写,不用创建出具体的实例,就可以调用工具类的功能。//具体的操作//调用时在kotlin中弱化了静态方法这个概念,没有直接定义静态方法的关键字。像是上述工具类的场景kotlin更推荐用单例来实现//具体的操作//虽然doAction()不是静态方法,但依旧可以通过Utils.doAction()调用使用单例类会将这
创建类的时候选择 Kotlin Class/File 文件输入类名在类里面定义变量、方法等等println(name + "的年龄是" + age)4. 调用的时候省去了new关键字//去掉了new关键字maxByOrNull():返回当前集合中...最大元素map 映射:返回新集合,将集合中的元素映射成另一个值filter过滤:返回新集合,将集合中的元素进行筛选any:返回Boolean,集合中
可以简单地将它理解成一种轻量级的线程。线程是非常重量级的,它需要依靠操作系统的调度才能实现不同线 程之间的切换。而使用协程却可以仅在编程语言的层面就能实现不同协程之间的切换,从而大 大提升了并发编程的运行效率。在没有开启线程的情况下,先后调用foo()和bar()这两个方法,那么理论上结果一定是a()、 b()、c()执行完了以后,x()、y()、z()才能够得到执行。
泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是 <T>。定义一个,就可以这么写:此时的MyClass就是一个泛型类,MyClass中的方法允许使用T类型的参数和返回值。我们在调用MyClass类和method()方法的时候,就可以将泛型指定成具体的类型,如下所示:这里我们将MyClass类的泛型指定成Int类型,于是method()方法就可以接收一个Int类型的
在创建完Intent的实例之后,随即调用该函数类型参数,并把Intent的 实例传入,这样调用startActivity()函数的时候就可以在Lambda表达式中为Intent传递 参数了。







