Kotlin基础 标准函数和静态方法
标准函数
Kotlin的标准函数定义在Standard.kt文件中的函数. 任何Kotlin代码都能调用标准函数
let标准函数
可以用来配合**?.**进行辅助判空处理
// 使用?.代替if的判断语句, 并使用let让lambda函数体内存在list的上下文it
list?.let {
it.add("1")
it.add("2")
}
with标准函数
场景: 在java中使用StringBuilder时, 在拼接经常出现sb.xxx sb.xxx这样的语句. 此函数可以简化StringBuild对象的频繁敲打.
with函数接收两个参数, 第一个参数为任意类型; 第二个参数Lambda表达式, 并在表达式中提供第一个参数的上下文.
val sb = StringBuilder()
val studentStr = with(sb) {
append("开始输入成绩") // sb.append()省略了sb. 以下如是
for (student in list) {
append(student.name)
}
append("输入结束.")
toString() // 最后一行作为返回值
}
run标准函数
与with相似, with是直接调用的, 而run是任意对象调用的. 并且参数只有一个Lambda函数体
val sb = StringBuilder()
val studentStr =sb.run {
append("开始输入成绩")
for (student in list) {
append(student.name)
}
append("输入结束.")
toString()
}
apply标准函数
与run一样, 不过apply返回值只能返回调用者本身. 适用类型Android创建Intent进行一系列传参.
静态方法
Kotlin中弱化了静态方法这个概念, 因为Kotlin提供了比静态方法更好用得特性-单例类.
使用Object关键字声明类为单例, 充当Java中的工具类, 由于语法糖的关系, 在调用时同样是类名.函数()
如果只想一个普通类中的某一个方法实现静态方法的调用方式, 可以使用 companion object
class util{
// 伴生类
companion object{
fuc strWrap(){}
}
}
companion object 关键字会在util类中创建一个伴生类, strWrap()就是这个伴生类的实例方法, Kotlin会保证Util中只有一个伴生类. 所以可以类名.函数()调用
以上都是真正意义上的静态方法, 只是模拟了静态方法的调用方式, 如果必须要实现. Kotlin两种方式: 注解和顶层方法
注解实现
当我们给单例类或者companion object中的方法加上了**@JvmStatic**注解, 那么Kotlin就会将这些方法编译成静态方法.
class util{
companion object{
@JvmStatic
fuc strWrap(){}
}
}
顶层方法实现
顶层方法是指没有定义在任何类中的方法. Kotlin会将所有的顶层方法全部编译成静态方法.
创建一个File类型的Kotlin文件. 声明函数. 然后再任何Kotlin中直接函数名调用. 但是如果在Java中调用, 会找不到, 因为Java中没有顶层函数的概念, 所有的方法都必须在类中. 在我们创建名字.kt时, Kotlin会自动创建一个名字kt的Java类. 刚才声明的方式就在其中, 所有就可以通过名字Kt.函数() 来调用