gpt4 book ai didi

java - 为什么我会得到 int.class cast 的 class cast exception

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:16 24 4
gpt4 key购买 nike

在下面的程序中,我无法理解为什么从 int.class 进行转换时会出现 ClassCastException

更新:我应该说明我知道原始类型是什么。 我不明白的是为什么 int.class 提供了错误的实现?

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

}

最佳答案

发生这种情况是因为 Classcast() 操作使用了 isInstance() 为原始类返回 false 的方法

If this Class object represents a primitive type, this method returns false.

cast() 方法的代码如下

public T cast(Object obj) {
if (obj != null && !isInstance(obj))//It fails here since isInstance returns false
throw new ClassCastException();
return (T) obj;

关于java - 为什么我会得到 int.class cast 的 class cast exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com