Вызов переопределенного метода из конструктора. Что использовать вместо этого? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть код на Java, где я должен вызвать переопределенный метод из конструктора базового класса.Я понимаю, что это может вызвать проблемы по многим ссылкам, например:

Вызов переопределенного метода из родительского класса ctor

, а также

https://medium.com/@rufuszh90/effective-java-item-17-design-and-document-for-inheritance-or-else-prohibit-it-be6041719fbc

У меня вопрос, какой шаблон использовать вместо этого?


Добавление примера кода здесь - это конструктор Task:

 public <T extends AbstractCommon & IParent> Task(T parent, String uuid, String version, Set<AbstractNode> exceptions) throws Exception {
    Event tef = getExecutionFinishedEvent();
    Event tep = getExecutionInProgressEvent();
    Event tefailed = getExecutionFailed();
    Event tefinishedonallnodes = getExecutionFinishedOnAllNodesEvent();
    Event tTimeout = getTimeoutEvent();
    Event tNotAllNodesAreAcessible = getNotAllNodesAreAccessible();
    Event tNotAllObjectsAreAvailable = getNotAllObjectsAreAvailable();

}

Вот класс расширенияAbstractRemoteTask и некоторые другие.

public abstract class AbstractRemoteTask extends Task implements InterNodeProcessor {

public AbstractRemoteTask() {
}

@JsonIgnore
@Override
protected Event getExecutionFinishedEvent() {
    return getEvent(Event.EventType.EXECUTION_FINISHED_LOCAL);
}

@JsonIgnore
@Override
protected Event getExecutionFinishedOnAllNodesEvent() {
    return getEvent(Event.EventType.EXECUTION_FINISHED_ON_ALL_NODES);
}

@Override
protected Event getExecutionInProgressEvent() {
    return getEvent(Event.EventType.EXECUTION_IN_PROGRESS);
}

@JsonIgnore
@Override
protected Event getExecutionFailed() {
    return getEvent(Event.EventType.EXECUTION_FAILED);
}


@JsonIgnore
@Override
protected Event getTimeoutEvent() {
    return new RemoteEvent(this, getNodeUuid(), Event.EventType.TIMEOUT);
}

@JsonIgnore
@Override
protected Event getNotAllNodesAreAccessible() {
    return new RemoteEvent(this, getNodeUuid(), Event.EventType.NOT_ALL_NODES_ARE_ACCESSIBLE);
}

@JsonIgnore
@Override
protected Event getNotAllObjectsAreAvailable() {
    return new RemoteEvent(this, getNodeUuid(), Event.EventType.NOT_ALL_OBJECTS_ARE_AVAILABLE);
}

Итак, вопрос в том, каков наилучший шаблон для реализации этого?Как это реализовано не рекомендуется.

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