这将起作用:
这也不行:
class Generic<T, R>(thingy: R)
{
val x = thingy.getX()
}
但是参数R
确实不应该是类签名的一部分。它只在构造时有关联。就像泛型方法的类型参数与类的类型参数无关一样。
然而,这样做是行不通的:
class Generic<T>(thingy: R)
{
val x = thingy.getX()
}
这也不行:
class Generic<T><R>(thingy: R)
{
val x = thingy.getX()
}
我在文档中没有找到答案。
R
上调用getX()
方法,它必须实现某个接口。没有边界的泛型类型将不具有getX
方法。你可以直接将Generic
参数声明为该接口类型:class Generic<T>(thingy: RInterface) { ... }
。 - marstran