在Java里,我们常常要进行许多非空判断:
public void fun1 (String str){ if(str != null) { System.out.println("Length = " + str.length()); } }
而在Kotlin中,即使不进行这些额外的判断,代码也是健壮的:
// 如果str=null,会打印:Length = null fun fun1 (str: String?) { println("Length = " + str?.length) }
还有,Java中经常出现的ClassCastException,在Kotlin中,也可以通过安全的类型转换进行避免:
不是Int类型的将输出null
val l2 = listOf("A",1,3,6,8,'c') l2.forEach { println(it as? Int) }
判断类型:
fun getStringLength(obj: Any): Int? { if (obj is String) return obj.length return null }
fun main(args: Array<String>) { println(getStringLength("aaa")) println(getStringLength(1)) }
输出
3 null