gray_dove 发表于 2019-7-18 18:23:38

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太麻烦了,有没有其他方法?

Krant5 发表于 2019-7-18 20:22:36

直接 return new T();可以吗,newInstance也是调用无参构造器

gray_dove 发表于 2019-7-19 00:10:51

Krant5 发表于 2019-7-18 20:22
直接 return new T();可以吗,newInstance也是调用无参构造器

不行,提示不能直接实例化

SYCh 发表于 2019-7-19 22:37:37

public interface Base<T> {


    default T getBean() {
      T bean=new T();

      return bean;
    }

}
这样子可以吗

大蚂虾 发表于 2019-10-11 17:52:00

我来个标准答案...快夸我, 快夸我, 快夸我!!!

你是想自己写个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]
查看完整版本: java泛型创建实例问题