我认为通用的问题, 一些代码:
public class ObservableValue<T> extends Observable {
private T value;
public ObservableValue(T initial) {
setValue(initial);
}
public void setValue(T newValue) {
if (value != newValue) {
this.value = newValue;
setChanged();
notifyObservers(value);
}
}
}
public class SokobanGame implements Game, Observer {
protected final ArrayList<GameStatusBarElement<Integer>> windowElements;
public void nextLevel(Integer currentLevel){
this.windowElements.get(0).getElement().setValue(currentLevel);
for(GameStatusBarElement<Integer> element : windowElements)
element.update();
}
}
public class GameStatusBarElement<T> {
protected final ObservableValue<T> element;
public GameStatusBarElement(String elementText,
ObservableValue<T> observableValue) {
this.element = observableValue;
}
}
在主要实施中:
GameStatusBarElement<Integer> level = new GameStatusBarElement<Integer>("Level:", new ObservableValue<Integer>(1));
GameWindow gameWindow = new GameWindow("",
null, null, level);
}
所以,问题是:由于setValue(currentLevel)
类型,我无法使用SokobanGame
(在currentLevel
中),eclipse告诉我要放置T
类型的内容。 ..但我用this.windowElements.get(0).getElement()
实例化了new GameStatusBarElement<Integer>("Level:", new ObservableValue<Integer>(1));
的类,所以我不明白这是什么问题?
答案 0 :(得分:1)
一切似乎都很好,但我没有看到getElement()
方法的实施。
如果您的getElement()
方法与此类似:
public ObservableValue<T> getElement() {
return element;
}
它应该编译得很好。