<分区>
我想编写通用函数,它可以通过名称创建任何类型的对象并将其作为自己的类型而不是对象类型返回。
import java.lang.reflect.Constructor;
public class Test{
static <T extends Object> T makeObject(String className) {
try {
Class<?> c = Class.forName(className);
Constructor<?> constructor = c.getConstructor();
Object object = constructor.newInstance();
return (T)c.cast(object);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
//without casting
String obj = makeObject("java.lang.String");
System.out.println(obj.getClass());
}
}
它工作正常,但我收到警告
Type safety: Unchecked cast from capture#4-of ? to T
如何在不添加 @SuppressWarnings("unchecked")
的情况下解决问题?