java.lang.InstantiationException尝试实例化子类时出错

时间:2019-03-05 22:24:24

标签: java design-patterns reflection

嗨,我有以下几个方面:

public abstract class A(){

    public void doSomething();

    public void makeMe(){
        try {
            A.class.getDeclaredConstructor().newInstance();
        } catch (InstantiationException | IllegalAccessException | IllegalArgumntException
                    | InvocationTargetException | NoSuchMethodException | SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }

}

public class B() extends A{
    @Override
    public void doSomething(){
    }    
}

public class C() extends A{
    @Override
    public void doSomething(){
    }    
}

该如何使makeMe获得以下行为:

B.makeMe()

C.makeMe()

原始类比这要复杂得多,这只是一个例子。但是如何获得它,有可能吗?

这可能与反思有关吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您正在尝试实例化抽象类A。要实例化子类(B.makeMe()创建一个B对象,而C.makeMe()创建一个C对象),请将A.class替换为this.getClass()。 />

Docs