在 Kotlin 中,如果我们有一个带构造函数的类:
我们可以在不指定类型参数的情况下调用构造函数:
为什么在这个看起来非常相似的情况下无法推断类型参数?
open class Wrapper<T>(val value: T)
我们可以在不指定类型参数的情况下调用构造函数:
val wrapped = Wrapper("value")
指定类型参数(例如Wrapper<String>("value")
)是冗余的,IntelliJ会告诉你这一点。
但是,如果构造函数调用在扩展子句中,类型参数是强制的。例如:
class StringWrapper : Wrapper<String>("value") // compiles
class StringWrapper : Wrapper("value") // does not compile
为什么在这个看起来非常相似的情况下无法推断类型参数?