使用Java稍不留神很容易导致NullPointException。Kotlin的类型系统使用可空类型(Nullable Type)旨在消除null引用导致的代码出错。 Kotlin要求我们必须检测可空类型的值,只有非null的值才允许访问。有几种方式来处理可空类型的值,以避免null引用的出现。 条件检查 var nullableStr ?: String = "abc" val len1 = nullableStr.length; //错误,不允许直接访问可空类型 val len2 = if (nullableStr != null) nullableStr.length else -1 //检查nullableStr为非null。 安全调用符?. val length = nullableStr?.length 如果nullableStr为null,那么返回null,否则返回length的值。 注意:返回类型也是可空值。这个例子返回的是Int? 在链式调用中的应用: bob?.department?.head?.name Elvis 操作符 ?: 设置默认值 elvis操作符 ?: 可以让我们对可空类型设置默认值。 val length = nullableStr?.length ?: -1 (类似java 的 三目) 如果nullableStr为null则返回默认值 - 1,否则返回length的值。 !!操作符 !!操作符让我们确保了可空类型的引用为非空值,如果为null则抛出NullPointException。 val l = b!!.length 这个让我们清楚知道此处可能会抛出NullPointException,不像Java隐藏了NullPointException的可能。 转换为非空类型 只要确保可空类型的值为非空,即可直接赋值给非空类型。 如使用!! 操作符 val nullableInt: Int? = 1 val nonNullableInt: Int = nullableInt!! 使用条件判断 val nullableInt: Int? = 1 if (nullableInt != null) { val nonNullableInt: Int = nullableInt }
Kotlin空值(Nullable Value)的处理以及转换 类似Java 三目
最新推荐文章于 2024-05-24 11:35:45 发布