我有一个关于可以在 Java 中返回参数化泛型类型的方法的问题。请耐心等待,因为我可能不会简明扼要地解释它!假设我们有以下内容:
public class SomeClass<T extends AnotherType> extends SomeSuperClass<T>{
private AnotherType member;
public SomeClass(AnotherType at){
member = at;
}
public SomeSuperClass<xxx> foo(AnotherType bar){
return new SomeSuperClass<xxx>(bar);
}
}
所以我们有了这个类似工厂的简单方法'foo'。我可以用什么代替“xxx”来表示返回的新实例的参数化类型将是“bar”对象的特定类型。例如,如果 bar 属于 Bar 类(AnotherType 的子类),那么我们将返回SomeSuperClass<Bar>(bar)
我知道我可以使用“?” 代表任何类型并具有:
return new SomeSuperClass<?>(bar);
但我希望更具体一点:
return new SomeSuperClass<bar.class>(bar);
我不能使用 T,如果 bar 的类型在 SomeSuperClass 层次结构中更高?也使用 justSomeClass<AnotherType>
太模糊了。
在这种情况下使用什么语法?