Kotlin 在Android开发中那些让人舒适的地方(2)
当然有时候使用when会有一些比较麻烦的事情,比如对else情况的处理,因为你的程序中明明只有这么几种情况,但是你却不得不写上关于else的情况处理,这样的代码让人觉得不安心,也降低了可读性,这个时候可以结合Koltin的密封类来处理,比如对网络情况的回执,对错误的处理,Android对RecyclerView的适配中多中ViewHolder的处理。网上学习 Android的资料一大堆,但如果学到
val userInfo: UserInfo by lazy { UserInfo() }
lateinit var person: InvationPerson
===================================================================
Kotlin有区间的概念,这个概念让创建循环更加易读方便。
// print :0 1 2 3 4 5 6 7 8 9 10
for (i in 0…10) {
print("$i ")
}
// print :10 9 8 7 6 5 4 3 2 1 0
for (i in 10 downTo 0) {
print("$i ")
}
// print :0 2 4 6 8 10
for (i in 0…10 step 2) {
print("$i ")
}
// print :0 1 2 3 4 5 6 7 8 9
for (i in 0 until 10) {
print("$i ")
}
val map = mapOf(“a” to 1, “b” to 2)
// print :a - 1 b - 2
for ((key, value) in map) {
print(“$key - $value”)
}
====================================================================
遍历集合是基操,对于一些稍微复杂一点的数据逻辑,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
======================================================================
开发中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 = str.apply{
// this指向str it 无指向
a // 返回值
}
===================================================================
对于Java的Stwich再熟悉不过,但是它使用起来有比较多的限制,有时候面对复杂的逻辑会显得乏力。
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年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
如何做好面试突击,规划学习方向?
面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。
同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
[外链图片转存中…(img-rCMQ1CuQ-1713386492313)]
在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。
[外链图片转存中…(img-70Th1zbw-1713386492314)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐



所有评论(0)