Java 在一个方法中返回基类的各种实现

Java 在一个方法中返回基类的各种实现,java,inheritance,return-type,Java,Inheritance,Return Type,所以我有几个不同的状态实现(StateImplementation和OtherStateImplementation) 如果某个事件发生,我需要返回一个新的实现。 该方法可以返回N个不同的实现 public class State() { // Contains various methods } public class StateImplementation extends State { public State onEvent(String event){

所以我有几个不同的状态实现(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
}

如果我这样做,类型与返回类型不匹配,我该怎么做呢。

旁注:请参见“可能使用接口而不是继承”,在其中一个状态类中使用实例方法似乎有点奇怪。一个静态方法或者一个单独的类怎么样?要么我错过了什么,要么。。。类型确实匹配:它们都扩展了
状态
,因此从一个应该返回
状态
的方法,您可以返回
状态实现
以及
其他状态实现
。也许将问题扩展到一个会有所帮助(尽管我直觉上认为它会变成一个副本…)你可以使用如下泛型:你似乎是对的,当我尝试制作一个最小的可复制示例编辑时,它确实起作用:我对事件有一个switch语句,但默认返回不起作用。