- Kotlin环境设置(命令行)
- Kotlin Hello World程序(命令行)
- Kotlin程序概念解释
- Kotlin开发环境设置(IDE)
- Kotlin第一个程序(IDE)
- Kotlin变量
- Kotlin数据类型
- Kotlin类型转换
- Kotlin运算符
- Kotlin表达式、语句和块
- Kotlin标准输入/输出
- Kotlin注释
- 控制流程
- 函数
- 数组
- 字符串
- 异常处理
- 空安全
- 集合
- 注解
- 反射
- Kotlin OOP
- 范围
- Java互操作性
- 正则表达式
Kotlin不安全和安全类型转换操作符
不安全的转换操作符:as
有时无法转换变量并抛出异常,这称为不安全转换。 不安全的强制转换由中缀运算符执行。
可以为空的字符串(String?
)不能转换为非null字符串(String
),这会引发异常。
un main(args: Array<String>){ val obj: Any? = null val str: String = obj as String println(str) }
以上程序抛出异常:
Exception in thread "main" kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String at TestKt.main(Test.kt:3)
尝试将Any
类型的整数值转换为字符串类型导致生成ClassCastException
。
val obj: Any = 123 val str: String = obj as String // Throws java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
源和目标变量需要可以为转换工作:
fun main(args: Array<String>){ val obj: String? = "String unsafe cast" val str: String? = obj as String? // Works println(str) }
执行上面示例代码,得到以下结果 -
String unsafe cast
Kotlin安全转换操作符:as?
Kotlin提供安全转换操作符:as?
安全地转换成一种类型。 如果无法进行转换,则返回null
,而不是抛出ClassCastException
异常。
让我们看一个例子,尝试转换任何类型的字符串值,程序员最初不知道编译器为可null
string
类型和可null
的int
类型。 如果可能的话,它会抛出值,或者返回null
而不是抛出异常,甚至无法进行强制转换。
fun main(args: Array<String>){ val location: Any = "Kotlin" val safeString: String? = location as? String val safeInt: Int? = location as? Int println(safeString) println(safeInt) }
执行上面示例代码,得到以下结果 -
Kotlin null
上一篇:Kotlin智能类型转换
下一篇:Kotlin Elvis运算符
扫描二维码
程序员编程王