3
我正在編寫一些代碼並遇到了編譯錯誤incompatible types
。 這是我有:另一個Java泛型「不兼容類型」編譯錯誤
public interface Expression<T> {
int getArity();
T evaluate();
}
public abstract class Value<T> implements Expression<T> {
@Override
public final int getArity() { return 0; }
}
public final class Constant<T> extends Value<T> {
private final T value;
/** Parameter constructor of objects of class Constant. */
public Constant(T val) {
value = val;
}
/** Copy constructor of objects of class Constant. */
private Constant(Constant instance) {
value = instance.evaluate(); // Error here.
}
@Override
public T evaluate() { return value; }
}
我想用繼承的時候我沒有正確申報仿製藥,所以我檢查Oracle's tutorial,他們在寫
interface PayloadList<E,P> extends List<E>
上面的de claration使用相同的泛型E
,這是我想要在我的例子中完成的。它似乎假定Constant<T>
的T
與Value<T>
的T
不同。否則它應該能夠合併都T
並看到它是相同的類型。 我怎樣才能正確實現我想要實現的目標?
(即,一個東西是不變的東西價值,這是同樣的東西表達式)
你想'私人恆(恆實例)我懷疑{'代替... –
^^'Constant'!='Constant' - 當你不指定通用時,它將會是'Constant
我當然相信,它一定是小東西逃離我的眼睛。我試了一下,現在用'不安全的操作'警告來編譯。 – afsantos