Android修行手册之Kotlin-互操作篇

简介: 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

有什么需要欢迎私我,交流群让学习不再孤单

👉前提

前面我们学了Kotlin语言,趁热打铁我们试试Kotlin在Android中的应用。

如果是新手,请先学完Android基础。

推荐先看小空之前写的熬夜Android系列,再来尝试。

👉实践过程

😜初识

一直在说Java和Kotlin有互操作性,但又怎么体现呢?我们仍然那实例来证明。

比如在Java中你根据Json生成的实体类,虽然是Java文件,但是Kotlin中可以直接使用,那就那么随便用没影响吗?

当然不行,我们时刻记着Ktlin有严格的NULL规则。

所以你的Java实体最好可为null的加上标识【@Nullable】,不可为null的加上【@NonNull】,这样Java转换为Kotlin的时候,就会根据这些标识转为Kotlin中的NULL规则写法。

public class EntityJava {
    //这是可为null,到kotlin中会转为 String?
    private @Nullable
    String name;
    //这是不可为null  Kotlin 会将她看做不能为空的类型
    private @NonNull
    String age;
    //当然,如果你不知道是否为空,默认这样是可以的,但是当你调用该量的时候,必须判断是是否为空 if判断也可以  !!为空时抛异常也可以  ?判断也行
    private int height;
}
复制代码

😜实体前缀

什么是实体?有的人叫Entity,有的人叫Model,其实就是Json生成的那个类。

如果实体类使用的是Java,

Kotlin中要想使用需要确保属性的前缀是get或set或is,否则Kotlin不能正常使用这个Java实体。

这个是可以自动生成的,其实默认情况下不需要我们去关心,在类中右键找到Generate再找到Getter and Setter

网络异常,图片无法展示
|

或者借助插件市场里面的插件【GsonFormatPlus】。

😜带有默认值的函数

在Kotlin中函数的参数是可以带有默认值的

open class Entity {
    fun myTest(name: String = "空名先生", age: String){
        Log.e("TAG,", "我输出了内容 ")
}
}
复制代码

如上,函数有两个参数,调用的时候如果输入两个参数,则两个参数都变,如果调用的时候只输入一个参数,则改参数代表的age

var  entity=Entity()
entity.myTest("芝麻粒儿","999")
entity.myTest("999") //这会出错
复制代码

有的朋友这么写了,但是为什么出错了呢。没错,上面的代码是会出错。

因为如果函数定义时,具有默认值的参数并不都是在最后面,则必须传入所有参数值.

open class Entity {
    fun myTest(age: String, name: String = "空名先生"){
        Log.e("TAG,", "我输出了内容 ")
}
}
复制代码
var  entity=Entity()
entity.myTest("芝麻粒儿","999")
entity.myTest("999") //这时候这就正确了
复制代码

那么如果是多个参数,有多个带有默认值的呢?答案同样的也是将带默认值的参数放在后面。

open class Entity {
    fun myTest(age: String, name: String = "空名先生", height: String = "182") {
        Log.e("TAG,", "我输出了内容 ")
}}
复制代码

接着在Java中我们又该怎么调用呢?只需要给函数加上个注解@JvmOverloads

@JvmOverloads
fun myTest(age: String, name: String = "空名先生", height: String = "182") {
    Log.e("TAG,", "我输出了内容 $age$name$height")
}
复制代码

//下面是在Java中的调用

Entity entityTest=new Entity();
entityTest.myTest("20岁");
entityTest.myTest("20岁","我的名字");
entityTest.myTest("20岁","我的名字","身高");


👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:

https://zhima.blog.csdn.net/

https://www.zhihu.com/people/zhimalier

https://juejin.cn/user/4265760844943479

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

相关文章
|
3月前
|
Android开发 Kotlin
Android经典面试题之Kotlin的==和===有什么区别?
本文介绍了 Kotlin 中 `==` 和 `===` 操作符的区别:`==` 用于比较值是否相等,而 `===` 用于检查对象身份。对于基本类型,两者行为相似;对于对象引用,`==` 比较值相等性,`===` 检查引用是否指向同一实例。此外,还列举了其他常用比较操作符及其应用场景。
193 93
|
2月前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
32 1
|
2月前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
59 4
|
2月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
30 1
|
2月前
|
Android开发 Kotlin
Android面试题之Kotlin中如何实现串行和并行任务?
本文介绍了 Kotlin 中 `async` 和 `await` 在并发编程中的应用,包括并行与串行任务的处理方法。并通过示例代码展示了如何启动并收集异步任务的结果。
32 0
|
2月前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
35 0
|
3月前
|
安全 Android开发 开发者
探索安卓开发的未来:Kotlin的崛起与Flutter的挑战
在移动开发的广阔天地中,安卓平台始终占据着举足轻重的地位。随着技术的不断进步和开发者需求的多样化,Kotlin和Flutter成为了改变游戏规则的新玩家。本文将深入探讨Kotlin如何以其现代化的特性赢得开发者的青睐,以及Flutter凭借跨平台的能力如何挑战传统的安卓开发模式。通过实际案例分析,我们将揭示这两种技术如何塑造未来的安卓应用开发。
82 6
|
3月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
92 1
|
3月前
|
安全 Java Android开发
探索安卓应用开发的新趋势:Kotlin和Jetpack Compose
在安卓应用开发领域,随着技术的不断进步,新的编程语言和框架层出不穷。Kotlin作为一种现代的编程语言,因其简洁性和高效性正逐渐取代Java成为安卓开发的首选语言。同时,Jetpack Compose作为一个新的UI工具包,提供了一种声明式的UI设计方法,使得界面编写更加直观和灵活。本文将深入探讨Kotlin和Jetpack Compose的特点、优势以及如何结合使用它们来构建现代化的安卓应用。
76 4
|
3月前
|
调度 Android开发 开发者
探索安卓开发中的新技术:Kotlin协程
【9月更文挑战第9天】本文将深入探讨Kotlin协程在安卓开发中的应用,揭示其如何优雅地处理异步任务。我们将从基础概念入手,逐步深入到实际开发场景,最后通过代码示例直观展示协程的魔力。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往更高效、更简洁代码的大门。