Kotlin 全量关键字全面整理,并附上简洁示例,确保每一个关键字都清楚易懂。

354 阅读4分钟

Kotlin 全量关键字全面整理,并附上简洁示例,确保每一个关键字都清楚易懂。

Kotlin官方文档-基础知识-基础语法(翻译官方文档+自我总结)

Kotlin官方文档-基础知识-常用惯用语法(翻译官方文档+自我总结)

Kotlin官方文档-基础知识-编码规范(翻译官方文档)

Kotlin 的关键字体系是学习 Kotlin 的核心内容,掌握它们不仅能避免编译错误,还能写出高效、可维护的代码。本文按照官方分类,将 硬关键字、软关键字、修饰符关键字 全面整理,并附上简洁示例,确保每一个关键字都清楚易懂。


一、硬关键字(始终为关键字,不可作标识符)

硬关键字在 Kotlin 中无条件保留,不能用作变量名、函数名或类名

关键字核心用途示例代码
as强制类型转换(失败抛异常);导入时指定类/函数别名val num = anyObj as Int import java.util.Date as JavaDate
as?安全类型转换(失败返回 null)val str = anyObj as? String ?: "默认值"
break终止当前循环for(i in 1..5){ if(i==3) break } loop@ for(i in 1..3){ break@loop }
class声明类class Person(val name: String){ fun sayHello() = println("Hi") }
continue跳过当前循环迭代for(i in 1..5){ if(i==3) continue; println(i) }
do后置条件循环(至少执行一次)var j=0; do{ println(j); j++ } while(j<2)
else条件不满足时执行分支val max = if(a>b) a else b when(num){1->"一"; else->"其他"}
false布尔“假”值val isFail = false; if(!isFail) println("成功")
for循环迭代for(i in 1..5) println(i) for((idx,item) in list.withIndex()) {}
fun声明函数fun add(a:Int,b:Int):Int=a+b fun printMsg()=println("Hello")
if条件表达式,可返回值val result = if(score>=60) "及格" else "不及格"
in判断是否在区间/集合内,或泛型逆变for(item in list){} if(5 in 1..10){} class Box<in T>
!in判断不在区间/集合内if(3 !in 5..10) println("不在区间")
interface声明接口interface Flyable{ fun fly() } class Bird:Flyable{ override fun fly(){} }
is类型检查val value:Any="Kotlin"; if(value is String) println(value.length)
!is类型反向检查if(value !is Int) println("不是整数")
null空引用常量val s:String?=null val n:Int?=null
object单例类、伴生对象、匿名对象object Singleton{ val app="Kotlin" } class A{ companion object{} }
package指定文件包package com.example.kotlin.keywords
return函数返回fun sub(a:Int,b:Int):Int{return a-b}
super父类引用class Dog:Animal(){ override fun eat(){ super.eat() } }
this当前对象引用class Person(val name:String){ fun intro()=println("我是$this.name") }
throw抛出异常fun checkAge(age:Int){ if(age<0) throw IllegalArgumentException("年龄非法") }
true布尔“真”值val isSuccess=true; if(isSuccess) println("完成")
try异常处理块try{10/0} catch(e:ArithmeticException){println(e.message)}
typealias类型别名typealias StringList=List<String>
val只读变量val age=25
var可变变量var count=0; count+=1
when条件分支表达式val grade = when(score){100->"满分"; in 90..99->"优秀"; else->"及格"}
while前置条件循环var i=0; while(i<3){ println(i); i++ }

二、软关键字(上下文敏感,可作标识符)

软关键字在特定语法场景中才被识别,其它场景可作变量名或函数名。

关键字核心用途示例代码
by委托接口/属性class User(p:Printer):Printer by p var name:String by Delegate()
catch捕获异常try{10/0} catch(e:ArithmeticException){println("除零异常")}
constructor主/次构造函数class Car constructor(val brand:String)
delegate注解使用目标@delegate:MyAnnotation val name:String by Delegate()
dynamicKotlin/JS 动态类型val jsObj:dynamic=js("{}"); jsObj.name="Kotlin"
field注解目标/属性幕后字段@field:Nullable var age:Int=0
file注解目标/整个文件@file:JvmName("MyFile") package com.example
finallytry/catch退出执行块try{} finally{ file.close() }
get属性gettervar isAdult:Boolean get() = age>=18
import导入包import java.util.ArrayList
init初始化块class Person(val name:String){ init{ println("初始化:$name") } }
param注解目标/参数fun test(@param:NotNull name:String){}
property注解目标/属性@property:Deprecated var age:Int=0
receiver注解目标/扩展接收者fun @receiver:NotNull String.printLen()=println(length)
set属性settervar score:Int set(value){ field=if(value in 0..100) value else 0 }
setparam注解目标/setter参数var age:Int set(@setparam:Min(0) value){ field=value }
where泛型约束fun<T> printInfo(t:T) where T:CharSequence,T:Comparable<T>{ println(t.length) }

三、修饰符关键字(声明修饰符,其他场景可作标识符)

修饰符关键字用于类、函数、属性的修饰。

关键字核心用途示例代码
actual多平台实际实现expect fun getPlatform():String; actual fun getPlatform()="Android"
abstract抽象类/成员abstract class Shape{ abstract fun area():Double }
annotation注解类@Target(AnnotationTarget.CLASS) annotation class MyAnnotation
companion类伴生对象class A{ companion object{ val info="伴生"; fun show()=println(info) } }
const编译期常量const val MAX=100
crossinline内联函数禁止非局部返回inline fun test(crossinline action:()->Unit){ action() }
data数据类data class User(val id:Int,val name:String)
enum枚举类enum class Season{ SPRING,SUMMER }
expect多平台声明expect class PlatformFile(path:String)
external非 Kotlin 实现external fun callJs():String
final禁止继承或覆盖final class FinalClass{ final fun noOverride(){} }
infix中缀函数infix fun Int.add(n:Int)=this+n
inline内联函数inline fun measureTime(action:()->Unit){ action() }
inner内部类class Outer{ inner class Inner{} }
internal模块可见性internal class Module{ internal fun f(){} }
lateinit延迟初始化var属性lateinit var email:String
noinline内联函数中不内联的lambdainline fun test(inlineAction:()->Unit,noinline noInlineAction:()->Unit){}
open允许继承/覆盖open class Animal{ open fun eat(){} }
operator操作符重载operator fun plus(p:Point)=Point(x+p.x)
out泛型协变class Box<out T>(val data:T)
override重写父类/接口override fun eat()=println("吃")
private私有可见性private val PWD="123456"
protected受保护可见性protected val secret="秘"
public公开可见性public class PublicClass{ public fun pubFun(){} }
reified实化内联泛型inline fun <reified T> isType(v:Any)=v is T
sealed密封类sealed class Result; class Success:Result()
suspend挂起函数suspend fun fetch():String{ return "data" }
tailrec尾递归tailrec fun factorial(n:Int,r:Int=1):Int{ if(n<=1) return r; return factorial(n-1,n*r) }
vararg可变参数fun sum(vararg nums:Int):Int=nums.sum()

总结

Kotlin 全量关键字终极对照表,77 个关键字一览无余:

  • 硬关键字 28 个:不可作标识符
  • 软关键字 17 个:上下文敏感
  • 修饰符关键字 32 个:声明修饰符

每个关键字都附有精准示例,可直接运行。掌握这些关键字,你就真正掌握了 Kotlin 语言核心语法规则。