java泛型创建实例问题
请问如何在getBean方法中创建一个T类型的对象?public interface Base<T> {
default T getBean() {
T bean;
return bean;
}
}
我能想到的方法只有
interface Base<T> {
default T getBean(Class<T> clazz) {
T bean;
try {
bean = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
return null;
}
return bean;
}
}
但每次都要传入一个class太麻烦了,有没有其他方法?
直接 return new T();可以吗,newInstance也是调用无参构造器 Krant5 发表于 2019-7-18 20:22
直接 return new T();可以吗,newInstance也是调用无参构造器
不行,提示不能直接实例化 public interface Base<T> {
default T getBean() {
T bean=new T();
return bean;
}
}
这样子可以吗
我来个标准答案...快夸我, 快夸我, 快夸我!!!
你是想自己写个hibernate之类的东西么??
interface Base<T> {
default T getBean() {
Class<T> entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericInterfaces()).getActualTypeArguments();
T bean = null;
try {
bean = entityClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
}
页:
[1]