首页 > 解决方案 > 创建给定 Class 类型的实例

问题描述

我有一些子类,它们都由一个共同的父类扩展。

我想要的是父类中的一个具体方法,并且该方法应该返回给定类类型的新对象。

这是我尝试过的。

class Vehicle {

    public <T> T get(Class<T> type){
        //return new T();
    }
}

class Car extends Vehicle {
}

class Van extends Vehicle {
}

以上get(...)方法

return new T();

语句给出一个编译错误说,

需要意外的类型
 :
 找到的类:类型参数 T

我不能直接创建子类的对象,例如,

new Car();

由于某些原因。可以有任意数量的子类,因此get()在每个子类中覆盖方法也不是一种选择。任何的想法?

标签: javaobjectgenericsinheritanceinstance

解决方案


您可以Class使用Class.newInstance().

public <T> T get(Class<T> type) throws InstantiationException, IllegalAccessException {
    return type.newInstance();
}

但是该类必须有一个无参数的构造函数;它可能会引发异常。


推荐阅读