返回类中使用的泛型类型的泛型类型的Java方法
这是我想实现的简单代码结构:返回类中使用的泛型类型的泛型类型的Java方法,java,generics,Java,Generics,这是我想实现的简单代码结构: public class B {} public class A<X extends B> { X x; public A(X x) {this.x = x;} public X getX() {return x;} } public class C<A> { public A getA() {return null;} public A<T> T getGenericXOfA
public class B {}
public class A<X extends B> {
X x;
public A(X x) {this.x = x;}
public X getX() {return x;}
}
public class C<A> {
public A getA() {return null;}
public A<T> T getGenericXOfA() {return getA().getX();}
}
公共类B{}
公共A类{
X;
公共A(X){this.X=X;}
public X getX(){return X;}
}
公共C类{
public A getA(){return null;}
public A T getGenericXOfA(){return getA().getX();}
}
我想通过使用“getGenericXOfA”方法返回类A的泛型参数处使用的类型来访问我的类C。
这在Java中是可能的吗?我想做这样的事:
public class C<A<X>> {
public A getA() {return null;}
public X getGenericXOfA() {return getA().getX();}
}
公共C类{
public A getA(){return null;}
public X getGenericXOfA(){return getA().getX();}
}
还是那样
public class C<A> {
public A getA() {return null;}
public A<T> T getGenericXOfA() {return getA().getX();}
}
公共C类{
public A getA(){return null;}
public A T getGenericXOfA(){return getA().getX();}
}
当您需要通过扩展B
的X
对其进行泛化时,您使用了原始类型的a
:
class C<X extends B> {
public A<X> getA() { ... }
public X getGenericXOfA() {
return getA().getX();
}
}
C类{
公共A getA(){…}
public X getGenericXOfA(){
返回getA().getX();
}
}
实际上,您正在使用泛型参数的名称。它们不重要,也不能引用现有的类
如果您想要与其他类相同的泛型类型,则应重复相同的模板。您可以执行以下操作:
public class C<X extends B, Y extends A<X>> {
public Y getA() {return ... }
}
公共C类{
public Y getA(){return…}
}
如果他们没有提到,我就不能在更富裕的班级做这样的事情,比如:公共A类和C{Y getYofA()X getXofA()},或者有办法做到这一点吗?@TheTonsOfCode,你不能。如果C
未被X
和Y
参数化,则代码不会编译。它们只是名称,与类A
及其泛型参数X
,Y
@TheTonsOfCode无关。如果您解释了您试图实现的目标,我建议您采取一种解决方法。