gpt4 book ai didi

java - `int.class.cast(null)` 起作用的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 21:39:25 25 4
gpt4 key购买 nike

我刚刚尝试了以下操作:

System.out.println(int.class.cast(null));

这完全符合其规范中所述:

Casts an object to the class or interface represented by this {@code Class} object.
@param obj the object to be cast
@return the object after casting, or null if obj is null
@throws ClassCastException if the object is not null and is not assignable to the type T.

虽然如果 Class 是一些非原始类,这似乎很直观 - 毕竟 null 可以转换为所有类 - 我想知道为什么决定对于像 这样的原始类int 这不会导致 ClassCastException。我的理由是

Foo f = (Foo) null; // Okay
int a = (int) null; // Not okay: "Cannot cast from null to int"
// why doesn't Class#cast reflect this?

最佳答案

int.class的类型是 Class<Integer> ,所以它相当于强制转换为 Integer ,参见Class Literals :

The type of p.class, where p is the name of a primitive type (§4.2), is Class<B>, where B is the type of an expression of type p after boxing conversion (§5.1.7).

关于java - `int.class.cast(null)` 起作用的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36628653/

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