我知道可以在Generic类定义中添加多个约束,例如:
class Example<I extends Object & Comparable<Object>>{}
Run Code Online (Sandbox Code Playgroud)
但我想要一个generic(MyGeneric
),它接受另一个generic(SomeGeneric<T>
)作为其类型参数,并约束该T
泛型的类型参数()(例如T extends SomeClass
).
重要的是,我需要知道两者的类型SomeGeneric
以及SomeClass
从类内部的类型(G
并且T
需要两者都被绑定).例如,想象一下这样的事情:
class MyGeneric<G extends SomeGeneric<T>, T extends SomeClass>
{
public G returnSomeGenericImpl(){}
public T returnSomeClassImpl(){}
}
Run Code Online (Sandbox Code Playgroud)
问题: 上面的工作,但我更喜欢我的班级只有一个类型参数,以使我的班级的实施者的生活更轻松.有办法做到这一点吗?
像这样的东西会很好(但这个特定的代码是不正确的):
class MyGeneric<G extends SomeGeneric<T extends SomeClass>>
{
public G returnSomeGenericImpl(){}
public T returnSomeClassImpl(){}
}
Run Code Online (Sandbox Code Playgroud)
如果我不清楚,我会很乐意澄清我的意图.
看起来不可能实现。
通过删除一个类型变量并尝试定义它,将类型定义减少一阶后,
class G extends SomeGeneric<T extends SomeClass>{}
Run Code Online (Sandbox Code Playgroud)
无法编译,因为类型参数 T 未绑定到已定义的类型参数。但是,这有效 -
class G<T extends SomeClass> extends SomeGeneric<T>{}
Run Code Online (Sandbox Code Playgroud)
因此,我推断使用两种类型进行参数化的唯一方法是预先声明它们。
归档时间: |
|
查看次数: |
3144 次 |
最近记录: |