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——用于修饰形参,表明该参数是个数可变的形参。