Java Generic,包含1个类型参数和2个约束

Ale*_*uch 18 java generics

我知道可以在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)

如果我不清楚,我会很乐意澄清我的意图.

See*_*ani 1

看起来不可能实现。

通过删除一个类型变量并尝试定义它,将类型定义减少一阶后,

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)

因此,我推断使用两种类型进行参数化的唯一方法是预先声明它们。