Java不允许在通用数据结构中使用基本类型。例如。不允许使用ArrayList
据我所知,您建议的ArrayList<int>
将与ArrayList<Integer>
相同。那正确吗? (换句话说,它在内部仍然存储一个Integer;每次将某物放入或取出时,它都会自动将其装箱/拆箱,但是对于ArrayList<Integer>
,自动装箱/自动拆箱已经可以了。)
如果相同,那么当我与<int>
表示相同的意思时,我不明白使用重复语法<Integer>
的实用性是什么。 (实际上,这会带来其他问题,因为例如int[]
与Integer[]
是不同的运行时类型,所以如果您有T[]
,而T
是int
,那意味着什么?) >
问题将出在性能上。对于列表中的每个get()
/ set()
方法,JVM都必须分别对所提到的方法取消装箱/装箱。请记住,自动装箱采用原始类型并将其包装到Object
中,反之亦然,如Autoboxing中所述:
我不认为有任何技术原因无法像您说的那样完成,但是始终有接口注意事项:例如,如果您将类型为ArrayList<int>
的对象自动转换为ArrayList<Integer>
,则会失去一些明确性就接口规范而言:ArrayList实际上存储的是objects,
我很高兴这是不可能的,因为int使用的内存比Integer少得多,而且速度也快得多。因此,这迫使我思考是否可以使用Collection<Integer>
(在商务应用程序中很多次都可以,但是在其他应用程序中则不是)。如果Collection<int>
可行且高效,我会更加高兴,但事实并非如此。
我不认为这是任何问题-您是否有具体情况在某种程度上限制了您?顺便说一句,在int和Integer之间存在区别,而对象可以为null而原始类型不能。