我收到运行时错误Exception in thread "main" java.lang.ClassCastException: m.compiler.datatypes.Int cannot be cast to java.lang.Integer
以下是代码段:
public abstract class DataType<E> {
protected E value;
...
}
这里是Int类:
public class Int extends DataType<Integer> {
@Override
public DataType<Integer> compare(DataType<Integer> other) {
if(value > other.value) //here the exception is thrown
return new Int(1);
if (value < other.value)
return new Int(-1);
return new Int(0);
}
}
实际通话:
if(lValue instanceof Int) {
Int lInt = (Int) lValue;
Int result = (Int) lInt.compare(rInt);
如果我打印里面的值比较值是正确的,但即使我检查
other.value.getClass()
我得到了例外。编译器没有错误,也没有警告。
答案 0 :(得分:1)
在某些时候,您必须已经为Int
分配了value
...而且应该有一个警告。你能value
final
吗?