聪明地施放到kotlin.String

时间:2017-12-04 19:48:00

标签: android kotlin compiler-warnings kotlin-null-safety

我正在尝试Kotlin并从编译器获得消息:

Smart cast to kotlin.String

代码:

/*"mTripStatus" is a nullable String*/
var html :String = HTML
html = if (mTripStatus!=null) html.replace("TRIP_STATUS_VALUE", mTripStatus) else html

这是什么意思?

2 个答案:

答案 0 :(得分:7)

如果满足mTripStatus条件,编译器知道null不能是if,因此它从String?到{{1}执行smart cast }。这是允许String编译的原因。

但请注意,这不应被解释为编译器警告。这是惯用的Kotlin代码。

答案 1 :(得分:0)

此代码:

var html :String = HTML
html = if (mTripStatus!=null) html.replace("TRIP_STATUS_VALUE", mTripStatus) else html

可以是:

var html: String = html
mTripStatus?.let { html = html.replace("TRIP_STATUS_VALUE", mTripStatus) }