Dar*_*ius 2 java generics inheritance
我有一个关于可以在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);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我们有这种琐碎的工厂式方法'foo'.我可以用什么代替'xxx'来表示返回的新实例的参数化类型将是'bar'对象的特定类型.例如,如果bar是Bar类(AnotherType的子类),那么我们将返回一个实例SomeSuperClass<Bar>(bar)
我知道我可以用'?' 代表任何类型,并具有:
return new SomeSuperClass<?>(bar);
Run Code Online (Sandbox Code Playgroud)
但我希望更具体,以便:
return new SomeSuperClass<bar.class>(bar);
Run Code Online (Sandbox Code Playgroud)
我不能使用T,在SomeSuperClass层次结构中,incase bar的类型更高?使用just SomeClass<AnotherType>也是太模糊了.
在这种情况下使用的语法是什么?
这个怎么样?
public <U extends AnotherType> SomeSuperClass<U> foo(U bar){
return new SomeSuperClass<U>(bar);
}
Run Code Online (Sandbox Code Playgroud)