看看这个。今天晚上,我试着向包装器抛出一些普里米特斯,这时我发现:
Integer i = (Integer)4;
Integer i = (Integer)4f; // Doesn't compile!但是如果我重写第二行:
Integer i2 = (int)4f; // Then it compiles有什么关系呢?为什么我可以在第一种情况下使用包装器类进行强制转换,而在第二种情况下不能?
发布于 2013-04-26 03:30:54
这里
Integer i = (Integer)4f; 您正在将一个float原语转换为一个Integer包装器-它们不匹配。这也与自动装箱无关。即使使用显式装箱,这仍然不能编译:
Integer i = (Integer)(Double.valueOf(4f));在这里:
Integer i2 = (int)4f;您将一个float原语转换为一个int原语(在流程中截断),然后java自动将其装箱为Integer
https://stackoverflow.com/questions/16223177
复制相似问题