我有一个班级,例如
public class Example<T> {...}
我想用我知道的特定类型实例化类Example。伪代码看起来像那样
public Example<T> createTypedExample(Class exampleClass, Class typeClass) {
exampleClass.newInstance(typeClass); // made-up
}
这样会给我相同的结果
Example<String> ex = new Example<String>();
ex = createTypedExample(Example.class, String.class);
是否可以在Java中使用?
答案 0 :(得分:1)
因为,返回类型即新实例的类是固定的;没有必要将它传递给方法。而是将static
工厂方法添加到Example
类
public class Example<T> {
private T data;
static <T> Example<T> newTypedExample(Class<T> type) {
return new Example<T>();
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
现在,您将如何创建通用Example
实例。
// String
Example<String> strTypedExample = Example.newTypedExample(String.class);
strTypedExample.setData("String Data");
System.out.println(strTypedExample.getData()); // String Data
// Integer
Example<Integer> intTypedExample = Example.newTypedExample(Integer.class);
intTypedExample.setData(123);
System.out.println(intTypedExample.getData()); // 123