Kotlin:什么是kotlin.String!类型

时间:2014-12-13 15:36:58

标签: kotlin

我是Kotlin的新手。你能解释一下" kotlin.String是什么意思!"类型,我怎么能编译以下代码?

fun withDefault<A>(computation: () -> A, default: A) =
    try { computation() } catch (e: Exception) { default }

fun getHostname1() = withDefault(InetAddress.getLocalHost().getCanonicalHostName, "localhost")

编译器打印以下消息:

Kotlin: Type inference failed: fun <A> withDefault(computation: () -> A, default: A): A
cannot be applied to
(kotlin.String!,kotlin.String)

谢谢。

1 个答案:

答案 0 :(得分:7)

当类型以!结尾时,表示这是一种平台类型,编译器不会强制执行null安全性。您可以在官方blog部分Platform Types中阅读有关平台类型的信息。

我建议这样修复:

fun getHostname1() = withDefault({ InetAddress.getLocalHost().getCanonicalHostName() } , "localhost")