gpt4 book ai didi

java - 返回泛型类型的新实例,其中 T 设置为给定 arg 的类型

转载 作者:行者123 更新时间:2023-11-30 06:27:41 25 4
gpt4 key购买 nike

我有一个关于可以在 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 层次结构中更高?也只使用 SomeClass<AnotherType>又太模糊了。

在这种情况下使用什么语法?

最佳答案

这个怎么样?

public <U extends AnotherType> SomeSuperClass<U> foo(U bar){
return new SomeSuperClass<U>(bar);
}

关于java - 返回泛型类型的新实例,其中 T 设置为给定 arg 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com