【发布时间】:2012-10-11 07:27:43
【问题描述】:
在下面的程序中,我无法理解为什么 ClassCastException 是来自 int.class 的演员
更新:
我应该指定我知道原始类型是什么。 What I don't understand is why int.class is provided with broken implementation?
public static void main(String[] args) {
System.out.println(DataType.INT.getValue(Integer.class));
System.out.println(DataType.INT.getValue(int.class));//Class cast exception here
}
enum DataType {
INT {
@Override
public <T> T getValue(Class<T> toClass) {
return toClass.cast(1000);//ClassCastException here for int.class
}
};
public abstract <T> T getValue(Class<T> toClass);
}
【问题讨论】:
-
enum
INT<T>在 java 中是不允许的,所以我试图用其他方式来做。但是正如你所看到的,如果某些人一旦通过int.class,它就会引发ClassCastException,这很容易出错。并且编译器确实限制了INT<int>,但这样就没有了。