通用类型使用,在 Java

Generic type use, in Java

我想我对一般用途有疑问, 部分代码:

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);
}

所以,问题是:由于 currentLevel 类型,我无法使用 setValue(currentLevel)(在 SokobanGame 中),eclipse 告诉我用 T 放一些东西类型...但是我用 new GameStatusBarElement<Integer>("Level:", new ObservableValue<Integer>(1)); 实例化了 this.windowElements.get(0).getElement() 的 class,所以我不明白这是什么问题?

一切似乎都很好,但我没有看到您的 getElement() 方法的实现。

如果您的getElement()方法是这样的:

public ObservableValue<T> getElement() {
    return element;
}

它应该编译得很好。