Kotlin中的修饰符关键字分类
- 类修饰符
- 成员修饰符
- 访问权限修饰符
- 协变逆变修饰符
- 函数修饰符
- 属性修饰符
- 参数修饰符
- 具体化类型修饰符
类修饰符
- 抽象类:abstract
- 不可继承类:final
- 可继承类:open
- 注解类:annotation
- 密封类:sealed
- 数据类:data
成员修饰
访问权限修饰
- private 私有,仅当前类可访问
- protected 当前类以及继承该类的可访问
- public 默认值,对外可访问
- internal 整个模块可以访问
协变逆变修饰符
- in 消费者类型修饰符
- out 生产者类型修饰符
属性修饰符
常量
参数修饰符
inline 声明在编译时,将函数的代码拷贝到调用的地方(内联)
vararg 变长参数修饰符
noinline 不内联参数修饰符, 声明 inline 函数的形参中,不希望内联的 lambda
crossinline 表明 inline 函数的形参中的 lambda 不能有 return
具体化类型修饰符
- reified : 使抽象的东西更加具体或真实
- 不再需要传参数 clazz
// Function
private fun <T : Activity> Activity.startActivity(context: Context, clazz: Class<T>) {
startActivity(Intent(context, clazz))
}
// Caller
startActivity(context, NewActivity::class.java)
使用reified 后
// Function
inline fun <reified T : Activity> Activity.startActivity(context: Context) {
startActivity(Intent(context, T::class.java))
}
// Caller
startActivity<NewActivity>(context)
https://juejin.cn/post/6844903833596854279
https://droidyue.com/blog/2019/07/28/kotlin-reified-generics/
流程控制
分支语句(if、when)
循环语句(for、while)
跳转语句(return、break、continue、throw)
操作符与重载
- 优先级
一元操作符
operator 修饰重载操作符
-
递增和递减操作符
二元操作符
-
in操作符
-
索引访问操作符
-
调用操作符
-
计算并赋值操作符
-
相等与不等操作符
===和!==不可重载
-
Elvis操作符?:
“?:”是一个二元运算符,如果第一个操作数为真,则返回第一个操作数,否则将计算并返回其第二个操作数
Kotlin中没有这样的三元运算符true?1:0,取而代之的是if(true) 1 else 0
-
比较操作符
-
infix函数自定义中缀操作符