当前位置: 代码网 > it编程>编程语言>Java > Kotlin在Android开发中那些让人舒适的地方

Kotlin在Android开发中那些让人舒适的地方

2024年07月28日 Java 我要评论
强大易用的迭代器 /遍历集合是基操,对于一些稍微复杂一点的数据逻辑,Java实现起来并不友好。当然后面有了RxJava来进行补救,不过Kotlin做的似乎要更好一点。(这里就不讨论Kotlin的集合框架架构了)// 映射// 过滤// asSequence 懒处理 map filter中都存在遍历操作 asSequence可以将它们合并起来 只存在一次遍历 提升性能asSequence 对提升效率大有裨益,其他的操作就不一一列举了。/ 默认参数 /

/ 强大易用的迭代器 /


遍历集合是基操,对于一些稍微复杂一点的数据逻辑,java实现起来并不友好。当然后面有了rxjava来进行补救,不过kotlin做的似乎要更好一点。(这里就不讨论kotlin的集合框架架构了)

val list = listof(1, 2, 3, 4, 5, 6, 7, 8, 9)

list.foreach { print(it) }

// 映射

val listup = list.map { it + 2 }

// 过滤

val listfilter = list.filter { it % 2 == 0 }

// assequence 懒处理 map filter中都存在遍历操作 assequence可以将它们合并起来 只存在一次遍历 提升性能

val listmore = list.assequence().map { it + 2 }.filter { it % 2 == 0 }.tolist()

assequence 对提升效率大有裨益,其他的操作就不一一列举了。

/ 默认参数 /


重载是很比较常见的操作,但是有时候这种方式会出现很多相同的模板代码。kotlin的默认参数,可以给参数指定默认值,并且在调用的时候像给变量赋值一样给参数赋值而不用像java一样非要按照顺序去传值。并且因为具有默认值的原因,所以调用的时候可以根据具体情况传递参数,更加灵活、更加易读和简洁。

class point(val x: float = 0f, val y: float = 0f)

val x = point(x = 10f)// x 10 y 0

val y = point(y = 10f)// x 0 y 10

val xy = point(x = 10f, y = 10f)// x10 y10

/ dataclass /


开发中bean文件是必不可少的,但是java的bean文件大部分都是模版代码,虽然有插件自动生成,但是依然会觉得比较繁琐,kotlin可以将这些类申明为data类,这些类会默认实现equals(),hashcode(),tostring() 和copy() 方法,从几十行java代码简洁到几行代码,kotlin只用声明 一个data class。

data class person(

val name: string,

val age: int,

val sex: int

){

//…

}

/ 简短强大的标准函数库 /


这是kotlin提供的函数库,使用后会简化不少的样板代码。稍微不一样的地方是它们的this和it各自指向不一样,以及返回值得不一样,使用得时候根据具体得情况来就可以了。

run

val str = “a”

val res = str.run{

// this 指向 “a” it没有指向

// 可以直接访问对象得属性

print(length)

1 // 最后一行返回值为1

}

let

val str = “a”

val res = str.let{

// this 指向当前class

// it 指向a

print(it.length)

“let” // 返回值"let"

}

with

val res = with(user){

// this 指向user it无指向

println(age)

println(name)

“with” // 返回值

}

apply

val str = “a”

val res = a.apply{

// this指向a it 无指向

2 // 返回值

}

/ 通吃的when /


对于java的switch再熟悉不过,但是它使用起来有比较多的限制,有时候面对复杂的逻辑会显得乏力。kotlin的when表达式可以匹配几乎任何东西(字面值,枚举,数字,范围,类型,表达式,甚至函数(kotlin函数至上)) 简单感受下:

fun whentest(number: number?): string {

return when (number) {

null, 0 -> “empty”

1 -> “tiny”

in 2…5 -> “small”

is long -> “big number”

else -> “unknow”

}

}

当然有时候使用when会有一些比较麻烦的事情,比如对else情况的处理,因为你的程序中明明只有这么几种情况,但是你却不得不写上关于else的情况处理,这样的代码让人觉得不安心,也降低了可读性,这个时候可以结合koltin的密封类来处理,比如对网络情况的回执,对错误的处理,android对recyclerview的适配中多中viewholder的处理。

// 密封类的存在让整个过程中可能出现的情况更加严谨

sealed class networkresult

data class success(val resjson: string) : networkresult()

data class failure(val error: error) : networkresult()

// 代码更加易读

fun networktest(result: networkresult) {

when (result) {

is success -> {

showresult(result.resjson)

}

is failure -> {

showerror(result.error)

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面v无偿领取!(备注android)
img

资源分享

  • 最新大厂面试专题

这个题库内容是比较多的,除了一些流行的热门技术面试题,如kotlin,数据库,java虚拟机面试题,数组,framework ,混合跨平台开发,等

  • 对应导图的android高级工程师进阶系统学习视频
    最近热门的,ndk,热修复,mvvm,源码等一系列系统学习视频都有!

存中…(img-8nzjuc0h-1710667628004)]

资源分享

  • 最新大厂面试专题

这个题库内容是比较多的,除了一些流行的热门技术面试题,如kotlin,数据库,java虚拟机面试题,数组,framework ,混合跨平台开发,等

[外链图片转存中…(img-d7nxdddv-1710667628005)]

  • 对应导图的android高级工程师进阶系统学习视频
    最近热门的,ndk,热修复,mvvm,源码等一系列系统学习视频都有!

[外链图片转存中…(img-rmb5tgzi-1710667628005)]

下载方法:点赞+关注后 点击【android高级工程师进阶学习】即可领取!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com