Возвращать различные реализации базового класса в одном методе - PullRequest
0 голосов
/ 26 сентября 2019

Итак, у меня есть несколько разных реализаций State (StateImplementation и OtherStateImplementation)

И мне нужно вернуть новую реализацию, если произойдет определенное событие.Метод может возвращать количество N различных реализаций.

public class State() {
    // Contains various methods
}

public class StateImplementation extends State {
    public State onEvent(String event){
        if(event.equals("foo")){
            return new OtherStateImplementation();
        } else {
            return this;
        }
    }
}

public class OtherStateImplementation extends State {
    // Second implementation
}

Как бы я поступил так, поскольку типы не соответствуют типу возврата, если я сделаю это так.

...