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

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
主站蜘蛛池模板: 通许县| 吴川市| 旌德县| 东兰县| 丹寨县| 河间市| 新民市| 棋牌| 曲靖市| 乌拉特后旗| 安图县| 永济市| 西乡县| 建宁县| 谢通门县| 宜昌市| 兴国县| 新竹市| 湖州市| 稻城县| 互助| 仙居县| 南平市| 江孜县| 长岭县| 泊头市| 崇明县| 玉林市| 临沧市| 辽宁省| 成安县| 淮南市| 泉州市| 海盐县| 萝北县| 馆陶县| 盐池县| 阿坝| 和硕县| 德庆县| 九龙县|