[英]Java Parameterized Type from Class object
Let's say I have a class called Foo with a generic type. 假设我有一个名为Foo的类,具有通用类型。
public class Foo<T> { ...
And I have another, non parameterized class called Foo Factory that generates Foos. 我还有另一个非参数化的类,称为Foo Factory,它生成Foos。
public class FooFactory {
public static Foo createFoo() {
return new Foo();
}
}
Is there any way to pass a Class clazz
parameter into createFoo
so that I can create a Foo<clazz>
? 有什么方法可以将
Class clazz
参数传递到createFoo
以便我可以创建Foo<clazz>
吗?
public class FooFactory {
public static Foo createFoo(Class clazz) {
return new Foo<clazz>();
}
}
Make the createFoo
factory method generic: 使
createFoo
工厂方法通用:
public static <T> Foo<T> createFoo(Class<T> clazz) {
return new Foo<T>();
}
Well as it turns out, you don't even need clazz
; 事实证明,您甚至不需要
clazz
; Java will infer <T>
for you, so this will suffice: Java将为您推断
<T>
,因此就足够了:
public static <T> Foo<T> createFoo() {
return new Foo<T>();
}
Just make the createFoo
function generic: 只需使
createFoo
函数通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
returns an instance of type Foo<T>
and does so for any type T
. 返回类型为
Foo<T>
的实例,并且对任何类型T
都这样做。 This is indicated by writing <T>
at the beginning of the method signature, which declares T
as a new type variable, specifying that createFoo()
is a generic method. 这可以通过在方法签名的开头写入
<T>
来表明,该方法将T
声明为新的类型变量,并指定createFoo()
是通用方法。
Check out : Generic Methods 签出: 通用方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.