官术网_书友最值得收藏!

Explicit casting

To cast a reference to a type explicitly, we use the as operator. Just as in Java, this operation will throw ClassCastException if the cast cannot be performed legally:

    fun length(any: Any): Int { 
      val string = any as String 
      return string.length 
    } 

The null value cannot be cast to a type that is not defined as nullable. So, the previous example would have thrown an exception if the value was null. To cast to a value that can be null, we simply declare the required type as nullable, as we would for a reference:

    val string: String? = any as String 

Remember that if a cast fails, then a ClassCastException exception will be thrown. If we want to avoid the exception, and instead have a null value if the cast fails, then we can use the safe cast operator, as ?. This operator will return the casted value if the target type is compatible; otherwise, it will return null. In the next example, string would be a successful cast, but file would be null:

 val any = "/home/users"
val string: String? = any as? String
val file: File? = any as? File
主站蜘蛛池模板: 曲周县| 杭州市| 左权县| 鲜城| 沅陵县| 通河县| 龙里县| 甘孜| 林州市| 天水市| 克什克腾旗| 精河县| 桐柏县| 沁阳市| 河源市| 裕民县| 梁河县| 桂东县| 崇信县| 城口县| 广昌县| 涡阳县| 山西省| 香河县| 会宁县| 阳信县| 满洲里市| 武威市| 石台县| 凉城县| 曲沃县| 若尔盖县| 石景山区| 蓬溪县| 桦川县| 聂荣县| 同江市| 常德市| 乐都县| 吉林省| 雅安市|