Kotlin:什么是kotlin.String! 类型

我是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) 

谢谢。

当类型以! 这意味着这是一个平台类型,编译器不会对它强制使用null-safety。 您可以在官方博客中了解平台类型, Platform Types一节。

我建议这样修复:

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