[英]Java generic method how to return a generic inner class
我知道标题很乱,但我不知道如何用几句话来解释这个问题。
让:
public class A<T> {
T foo;
public A(T foo) {
this.foo = foo;
}
}
public class B {
public A<T> getA() {
...
}
}
现在,显然 B 方法甚至不会编译。 关键是我需要 B 类中的一个方法返回 A 类,其中类 T 必须以某种方式传递给该方法,以便我可以在此类方法中创建 T 的实例以返回 A 的实例。
我试过类似的东西:
public A getA(Class aClass) {
return new A<aClass> ...
}
但这根本不会编译(aClass 是未知的,它会抱怨,显然它是对的......)
那么,我如何将类 T 传递给该方法以在其中创建 A 的实例?
我希望你明白我的问题。
非常感谢提前,
你可能想写一个泛型方法:
https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
public class B {
public <T> A<T> getA() {
...
}
您的函数需要一个类型参数。 请记住,您还需要A
的构造函数的参数。 这是语法:
public <T> A<T> getA(T t) {
return new A<>(t);
}
您的非通用实现具有修复蓝图:更改此
public A getA(Class aClass) {
return new A<aClass> ...
}
对此:
public <T> A<T> getA(Class<T> tClass) {
// ^^^ ^^^ ^^^
return new A<T>(tClass.newInstance()); // Assumes T has a default constructor
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.