Kotlin的关键字
在Kotlin语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符时,不要让标识符与关键字相同,否则会引起错误。例如,如下代码将会引起错误
val class = 2
Kotlin的关键字可以分为三类
- 硬关键字:这些关键字无论在什么情况下都不能用作标识符
- 软关键字:这些关键字可以在他们不起作用的上下文中用作标识符
- 修饰符关键字:这些关键字也可以在代码中用作标识符
Kotlin的硬关键字包括:
- as——用于做类型转换或为import语句指定别名。
- as?——类型安全的类型转换运算符。
- break——中断循环。
- class——声明类。
- continue——忽略本次循环剩下的语句,重新开始下一次循环。
- do——用于do while循环。
- true——在Boolean类型中表示真的直接量。
- false——在Boolean类型中表示假的直接量。
- else——在if分支中使用。
- for——用于for循环。
- fun——声明函数。
- if——在if分支中使用。
- in——在for循环中使用;in还可作为双目运算符,检查一个值是否处于区间或集合内; in也可以在when表达式中使用;in还可用于修饰泛型参数,表明该泛型参数支持逆变。
- !in——可作为双目运算符in的反义词;!in也可在when表达式中使用。
- is——用于做类型检查(类似Java的instanceof)或在when表达式中使用。
- !is—用于做类型检查(is的反义词)或在when表达式中使用。
- null——代表空的直接量。
- object——用于声明对象表达式或定义命名对象。
- package——用于为当前文件指定包。
- return——声明函数的返回。
- super——用于引用父类实现的方法或属性,或者在子类构造器中调用父类构造器。
- this——代表当前类的对象或在构造器中调用当前类的其他构造器。
- throw——用于抛出异常。
- try——开始异常处理。
- typealias——用于定义类型别名。
- val——声明只读属性或变量。
- var——声明可变属性或变量。
- when——用于when表达式。
- while——用于while循环或do while循环。
Koltin的软关键字包括:
- by——用于将接口或祖先类的实现代理给其他对象。
- catch——在异常处理中用于捕捉异常。
- constructor——用于声明构造器。
- delegate——用于指定该注解修饰委托属性存储其委托实例的字段。
- dynamic——主要用于在Kotlin/JavaScript中引用一个动态类型。
- field——用于指定该注解修饰属性的幕后字段
- file——用于指定该注解修饰该源文件本身
- finally——异常处理中的finally块。
- get——用于声明属性的getter方法,或者用于指定该注解修饰属性的getter方法。
- set——用于声明属性的setter方法,或者用于指定该注解修饰属性的setter 方法。
- import——用于导包。
- init——用于声明初始化块。
- param——用于指定该注解修饰构造器参数。
- property——用于指定该注解修饰整个属性(这种目标的注解对Java不可见,因为Java并没有真正的属性)。
- receiveris——用于指定该注解修饰扩展方法或扩展属性的接收者。
- setparam——用于指定该注解修饰setter方法的参数。
- where——用于为泛型参数增加限制。
Kotlin的修饰符关键字包括:
- abstract——用于修饰抽象类或抽象成员。
- annotation——用于修饰一个注解类。
- companion——用于声明一个伴生对象。
- const——用于声明编译时常量。
- crossinline——用于禁止在传给内联函数的Lambda表达式中执行非局部返回。
- data——用于声明数据类。
- enum——用于声明枚举。
- external——用于声明某个方法不由Kotin实现(与Java的native相似)。
- final——用于禁止被重写。
- infix——声明该函数能以双目运算符的格式执行。
- inline——用于声明内联函数,Lambda表达式可在内联函数中执行局部返回。
- inner——用于声明内部类,内部类可以访问外部类的实例。
- internal——用于表示被修饰的声明只能在当前模块内可见。
- lateinit——用于修饰以个non-null属性,用于指定该属性可在构造器以外的地方完成初始化。
- noinline——用于禁止内联函数中个别Lambda表达式被内联化。
- open——用于修饰类,表示该类可派生子类;或者用于修饰成员, 表示该成员可以被重写。
- out——用于修饰泛型参数,表明该泛型参数支持协变。
- override——用于声明重写父类的成员。
- private——private访问权限。
- protected——proteted 访问权限。
- public——public访问权限。
- reified——用于修饰内联函数中的泛型形参,接下来在该函数中就可像使用普通类型样使用该类型参数。
- sealed——用于声明一个密封类。
- suspend——用于标识一个函数后Lambda表达式可作为暂停。
- tailrec——用于修饰一个函数可作为尾随递归函数使用。
- vararg——用于修饰形参,表明该参数是个数可变的形参。