Java 在一个方法中返回基类的各种实现
所以我有几个不同的状态实现(StateImplementation和OtherStateImplementation) 如果某个事件发生,我需要返回一个新的实现。 该方法可以返回N个不同的实现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){
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语句,但默认返回不起作用。