我想编写如下代码:
typealias Just<T> = T // Error here
val hello: Just<String> = "hello"
我收到错误Kotlin: Type alias expands to T, which is not a class, an interface, or an object
。
我认为typealias是一个编译时功能,并且不应该有类型擦除。那么为什么我不能这样写typealias
呢?
答案 0 :(得分:2)
你不能编写这样的代码,因为Kotlin编译器的开发人员没有看到支持扩展为类型参数的类型别名的用例(Just
基本上是这种类型别名的唯一可能的声明),因此没有设计和实施对它的支持。这确实与类型擦除无关。