有Java API中的可膨胀的数组类相当于Vector或ArrayList可以与图元可以使用类(INT,炭,双,等)?
我需要整数快速,可扩展的阵列,它似乎浪费有包裹他们在Integer班级,以便与使用它们Vector或ArrayList.我的google-fu让我失望了.
Autoboxing相当可怕.虽然我完全理解之间的差异==和.equals我不能不帮助有后续错误的地狱了我:
final List<Integer> foo = Arrays.asList(1, 1000);
final List<Integer> bar = Arrays.asList(1, 1000);
System.out.println(foo.get(0) == bar.get(0));
System.out.println(foo.get(1) == bar.get(1));
Run Code Online (Sandbox Code Playgroud)
那打印
true
false
Run Code Online (Sandbox Code Playgroud)
他们为什么这样做?它与缓存的整数有关,但如果是这样的话,为什么它们不只是缓存程序使用的所有整数?或者为什么JVM始终不会自动拆箱到原始状态?
打印虚假或真假会更好.
编辑
我不同意旧代码的破坏.通过foo.get(0) == bar.get(0)返回true,您已经破坏了代码.
通过在字节代码中将int替换为int(只要从未赋值为null),就不能在编译器级别解决这个问题.