类对象中的Java参数化类型
假设我有一个名为Foo的类,具有泛型类型类对象中的Java参数化类型,java,generics,Java,Generics,假设我有一个名为Foo的类,具有泛型类型 public class Foo<T> { ... 有没有办法将Class clazz参数传递到createFoo中,以便我可以创建Foo 公共类工厂{ 公共静态Foo createFoo(类clazz){ 返回新的Foo(); } } 使createFoo工厂方法通用: public static <T> Foo<T> createFoo(Class<T> clazz) { return new
public class Foo<T> { ...
有没有办法将Class clazz
参数传递到createFoo
中,以便我可以创建Foo
公共类工厂{
公共静态Foo createFoo(类clazz){
返回新的Foo();
}
}
使createFoo
工厂方法通用:
public static <T> Foo<T> createFoo(Class<T> clazz) {
return new Foo<T>();
}
将
createFoo
工厂方法设置为通用:
public static <T> Foo<T> createFoo(Class<T> clazz) {
return new Foo<T>();
}
将
createFoo
工厂方法设置为通用:
public static <T> Foo<T> createFoo(Class<T> clazz) {
return new Foo<T>();
}
将
createFoo
工厂方法设置为通用:
public static <T> Foo<T> createFoo(Class<T> clazz) {
return new Foo<T>();
}
只需将
createFoo
函数设置为通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
publicstaticfoo-createFoo(){
返回新的Foo();
}
返回类型为Foo
的实例,并对任何类型T
执行此操作。这可以通过在方法签名的开头写入
来表示,该签名将T
声明为一个新的类型变量,指定createFoo()
是一个泛型方法
签出:只需将
createFoo
函数设置为通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
publicstaticfoo-createFoo(){
返回新的Foo();
}
返回类型为Foo
的实例,并对任何类型T
执行此操作。这可以通过在方法签名的开头写入
来表示,该签名将T
声明为一个新的类型变量,指定createFoo()
是一个泛型方法
签出:只需将
createFoo
函数设置为通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
publicstaticfoo-createFoo(){
返回新的Foo();
}
返回类型为Foo
的实例,并对任何类型T
执行此操作。这可以通过在方法签名的开头写入
来表示,该签名将T
声明为一个新的类型变量,指定createFoo()
是一个泛型方法
签出:只需将
createFoo
函数设置为通用:
public static <T> Foo<T> createFoo() {
return new Foo<>();
}
publicstaticfoo-createFoo(){
返回新的Foo();
}
返回类型为Foo
的实例,并对任何类型T
执行此操作。这可以通过在方法签名的开头写入
来表示,该签名将T
声明为一个新的类型变量,指定createFoo()
是一个泛型方法
签出:我想您可以不使用此解决方案的
Class clazz
参数,对吗?您甚至需要提供Class
作为参数吗?我总是忘记这个推论到底有多聪明。我认为fooa=createFoo()代码>应该可以工作。或者干脆foodfactory。createFoo()
非常正确,不需要使用clazz
。@TomG或Foo-iFoo=FooFactory.createFoo()
编译器将为T
推断Integer
的位置。我想这个解决方案不需要clazz
参数,您可以吗?您甚至需要提供Class
作为参数吗?我总是忘记这个推论到底有多聪明。我认为fooa=createFoo()代码>应该可以工作。或者干脆foodfactory。createFoo()
非常正确,不需要使用clazz
。@TomG或Foo-iFoo=FooFactory.createFoo()
编译器将为T
推断Integer
的位置。我想这个解决方案不需要clazz
参数,您可以吗?您甚至需要提供Class
作为参数吗?我总是忘记这个推论到底有多聪明。我认为fooa=createFoo()代码>应该可以工作。或者干脆foodfactory。createFoo()
非常正确,不需要使用clazz
。@TomG或Foo-iFoo=FooFactory.createFoo()
编译器将为T
推断Integer
的位置。我想这个解决方案不需要clazz
参数,您可以吗?您甚至需要提供Class
作为参数吗?我总是忘记这个推论到底有多聪明。我认为fooa=createFoo()代码>应该可以工作。或者干脆foodfactory。createFoo()
非常正确,不需要使用clazz
。@TomG或Foo-iFoo=FooFactory.createFoo()代码>编译器将为T
推断整数的位置。