Kotlin通用属性

没有声明类级别泛型类型的情况下 ,kotlin有没有办法创建泛型属性? 看起来像这样的东西:

interface Generic { val t: T //I need this type only once, thats why I dont wanna pass in the class level fun <E> gMethod(e: E) { //This works, so I'm wondering if there's something similiar to properties } } 

不,编译器应该怎么知道T是什么? 如果您不需要泛型类型参数T ,则可以将其声明为val t: Any

由于有关泛型的文档没有提到这样的事情,我敢肯定,这不是语言的一部分。

这很可能是因为你必须在某个时刻声明属性的类型。 泛型函数是有意义的,因为你用具有某种静态类型的参数(或者在扩展函数的情况下,把它们称为这种参数)调用它们。

问题是,你为什么要有这样的通用属性?

当你试图设置它时,你会期望这个属性接受什么值? 如果答案是什么,也许它的类型应该是AnyAny?

这同样适用于阅读 – 你会期望你从这个属性读取的值有什么类型? 如果你不想指定一个类型,它可能应该是AnyAny?

实际上在语言中的解决方案,就是使类/接口具有类型参数,从而解决这些问题。