繁体   English   中英

Java泛型方法如何返回泛型内部类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM