1. java 自动拆箱和装箱的缺点
从上面可以得出的结论,是“==”运算在晕倒算术的情况下不会自动拆箱,以及他们的equals()方法不处理,数据转换的关系,因此在实际代码中尽量避免使用自动拆箱和装箱。
性能开销:自动装箱和拆箱会增加一些性能开销。将基本类型的值转换为包装类型的对象需要额外的时间和空间。
非线程安全:自动拆箱和装箱是非线程安全的,因为它们涉及到了对象的创建和销毁。如果在多线程环境下使用,可能会出现并发问题。
-可能会出现 NullPointerException 异常:如果一个自动装箱的操作产生一个 null 值,那么它将会抛出 NullPointerException 异常。这可能会导致难以调试的问题。
可能影响内存和垃圾回收:由于自动装箱和拆箱会在堆上创建对象,这可能会导致内存占用过高,从而导致垃圾回收的性能下降。
可能会导致不必要的装箱和拆箱:在自动拆箱和装箱的过程中,可能会发生不必要的装箱和拆箱,这会导致额外的开销。
2.类型擦除
类型擦除 ,java 直接把已有的类型泛型化。比如:ArrayList,原地泛型化后变成了ArrayList,而且保保证之前用的ArrayList的代码,在泛型版本里必须继续用这同一个容器。这就必须让所有房型实例类型,如,ArrayList,ArrayList这些全部成为ArrayList的子类型才能可以,否则类型转换不安全的。由此引出了裸类型,裸类型被视为所有该类型泛型化实例的共同父类型(Super Type)。