看看这个......今天晚上,当我发现:
时,我试图将一些原始信息投给包装纸Integer i = (Integer)4;
Integer i = (Integer)4f; // Doesn't compile!
但如果我改写第二行:
Integer i2 = (int)4f; // Then it compiles
有什么区别?为什么我能在第一种情况下使用包装类进行转换,而不是在第二种情况下进行转换?
答案 0 :(得分:5)
这里
Integer i = (Integer)4f;
你将一个浮动原语转换为Integer包装器 - 它们不合适。这与自动装箱无关。即使有明确的拳击,这仍然不会编译:
Integer i = (Integer)(Double.valueOf(4f));
在这里:
Integer i2 = (int)4f;
你将一个浮动原语转换为一个int原语(在进程中截断),然后java自动将它们转换成一个Integer为你