假设我有一个名为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>();
}
}
答案 0 :(得分: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>();
}
答案 1 :(得分:0)
只需将createFoo
函数设为通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
返回Foo<T>
类型的实例,并对任何类型T
执行此操作。通过在方法签名的开头编写<T>
来指示这一点,该签名将T
声明为新的类型变量,指定createFoo()
是通用方法。