Сделать объект из подкласса из суперкласса - PullRequest
0 голосов
/ 07 февраля 2019

Во-первых, извините за плохой английский, это не мой родной язык

Как можно было бы создать объект типа из подкласса через суперкласс.например, если у меня есть суперкласс:

public class superClassName(){
    method(){
    make object of subclass type used
    }

, а затем я вызываю метод в подклассе.

Я хотел бы создать объект на основе подкласса, который был вызванесли это имеет смысл?

1 Ответ

0 голосов
/ 07 февраля 2019

Использование отражения может обеспечить самое быстрое решение (this.getClass() возвращает конкретный подкласс):

void method(){
    //use default, no-arg constructor
    superClassName newObject = this.getClass().getConstructor().newInstance();
}

Кроме того, ваш родительский класс может объявить абстрактный метод, который заставляет подклассы предоставлять поставщика:

public abstract class superClassName(){
    abstract Supplier<superClassName> getInstanceSupplier();

    void method(){
        superClassName newObject = this.getInstanceSupplier().get();
    }
}

И реализовать это так же просто, как:

public class SubClassName extends superClassName {
    abstract Supplier<superClassName> getInstanceSupplier() {
        return () -> new SubClassName();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...