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")