Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
看看这个……今天晚上,当我发现:
Integer i = (Integer)4; Integer i = (Integer)4f; // Doesn't compile!
但是如果我重写第二行:
Integer i2 = (int)4f; // Then it compiles
有什么不同?为什么我应该能够在第一种情况下使用包装类进行转换,而在第二种情况下却不行?
这里
Integer i = (Integer)4f;
您正在将浮点原语转换为整数包装器 - 它们不适合。这也与自动装箱无关。即使使用显式装箱,这仍然无法编译:
Integer i = (Integer)(Double.valueOf(4f));
在这里:
Integer i2 = (int)4f;
您将 float 原语转换为 int 原语(在此过程中截断),然后 java 自动将其装入 Integer 为您