我有一个名为RiverCrossingGame
的通用游戏类。这个想法是这个子类将实现不同的河流谜题。
在我的超类中,我有Vector
个状态。现在这些状态是通用的。 GenericState
实现了任何河流穿越游戏的状态概念中常见的一些行为。子类关联状态将实现特定于游戏的其他方法。
所以我的RiverCrossingGame
带有状态向量:
public abstract class RiverCrossingGame implements PuzzleGame {
public GenericBank westBank;
public GenericBank eastBank;
public static Vector<GenericState> states;
public List<String> steps;
public abstract void play();
public abstract void printSteps();
}
然后WolfGoatCabbageGame
我为这个游戏定义了一个名为State
的特定状态(它在Wolf,Goat和Cabbage游戏包中),它是GenericState
的子类:
public class State extends GenericState {
// State members...
}
然后在实际类的类中,我尝试初始化状态向量:
public class WolfGoatCabbageGame extends RiverCrossingGame {
public enum Element { FARMER, WOLF, GOAT, CABBAGE };
public WolfGoatCabbageGame() {
westBank = new Bank("WEST", new Element[]{ Element.FARMER, Element.WOLF, Element.GOAT, Element.CABBAGE }, false);
eastBank = new Bank("EAST", true);
states = new Vector<State>();
steps = new ArrayList<String>();
}
// more members...
}
这就是问题所在。初始化states
时,我收到此错误:
类型不匹配:无法从Vector转换为 向量
这就是我得到的地方。 State
是GenericState
的子类。为什么我无法以这种方式初始化Vector
?我错过了一些明显的东西吗我该怎么办?
答案 0 :(得分:1)
我认为您需要将states
初始化为Vector<GenericState>
。初始化后,您可以使用State
类型的实例填充它,因为它们是GenericState
类的实例。