java.lang.InstantiationException Ошибка при попытке создать экземпляр дочернего класса - PullRequest
1 голос
/ 06 марта 2019

Привет, у меня есть следующие предложения:

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 Ответ

2 голосов
/ 06 марта 2019

Вы пытаетесь создать экземпляр абстрактного класса A.Чтобы создать экземпляр дочернего класса (B.makeMe() создает объект B, а C.makeMe() создает объект C), замените A.class на this.getClass().

Docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...