Java 在访问泛型类成员的方法期间发生ClassCastException
我在线程“main”java.lang.ClassCastException中遇到运行时错误Java 在访问泛型类成员的方法期间发生ClassCastException,java,generics,exception,Java,Generics,Exception,我在线程“main”java.lang.ClassCastException中遇到运行时错误异常:m.compiler.datatypes.Int无法转换为java.lang.Integer 以下是代码片段: public abstract class DataType<E> { protected E value; ... } 如果我在比较中打印值,则值是正确的,但即使我使用 other.value.getClass() 我有个例外。编译器没有错误和警告。在某些情况下,您必须为
异常:m.compiler.datatypes.Int无法转换为java.lang.Integer
以下是代码片段:
public abstract class DataType<E> {
protected E value;
...
}
如果我在比较中打印值,则值是正确的,但即使我使用
other.value.getClass()
我有个例外。编译器没有错误和警告。在某些情况下,您必须为
值分配Int
。。。应该有一个警告。您能将值设置为最终值吗 在某些情况下,您必须为值指定Int
。。。应该有一个警告。您能将值设置为最终值吗 你确定没有收到任何类型的安全警告吗?泛型类型似乎不匹配。if(左值instanceof Int){Int lInt=(Int)左值;Int result=(Int)lInt.compare(rInt)不,我真的没有收到任何警告或错误。我甚至检查了我传递的每一种泛型。我不明白为什么值一经使用就变成了Int
,但在它变成整数之前?听起来好像问题出在rInt上-rInt是如何初始化的?在某个时候,你需要知道您没有为值分配Int…并且应该有一个警告。您能将值设置为final吗?您确定没有收到任何类型安全警告吗?似乎泛型类型不匹配。if(lValue instanceof Int){Int lInt=(Int)lValue;Int result=(Int)lInt.compare(rInt)不,我真的没有收到任何警告或错误。我甚至检查了我传递的每一种泛型。我不明白为什么值一经使用就变成了Int
,但在它变成整数之前?听起来好像问题出在rInt上-rInt是如何初始化的?在某个时候,你需要知道我没有给值赋值,应该有一个警告。你能把value
final吗?
if(lValue instanceof Int) {
Int lInt = (Int) lValue;
Int result = (Int) lInt.compare(rInt);
other.value.getClass()