0

假设我有一个名为 Foo 的类,它具有泛型类型。

public class Foo<T> { ...

我还有另一个非参数化类,称为 Foo Factory,它生成 Foos。

public class FooFactory {
    public static Foo createFoo() { 
        return new Foo();
    }
}

有没有办法将Class clazz参数传递给createFoo我,以便我可以创建一个Foo<clazz>

public class FooFactory {
    public static Foo createFoo(Class clazz) {
        return new Foo<clazz>();
    }
}
4

2 回答 2

3

使createFoo工厂方法通用:

public static <T> Foo<T> createFoo(Class<T> clazz) {
    return new Foo<T>();
}

事实证明,你甚至不需要clazz; Java 会<T>为你推断,所以这就足够了:

public static <T> Foo<T> createFoo() {
    return new Foo<T>();
}
于 2013-11-08T20:56:09.360 回答
0

只需使createFoo函数通用:

public static <T> Foo<T> createFoo() {
    return new Foo<>();
}

返回一个类型的实例,Foo<T>并且对任何类型都这样做T。这通过<T>在方法签名的开头写入来表示,该方法签名声明T为新类型变量,指定这createFoo()是一个泛型方法。

签出:通用方法

于 2013-11-08T21:04:50.013 回答