慎用自动装箱
来源:互联网 发布:故宫淘宝 知乎 编辑:程序博客网 时间:2024/06/05 15:27
Java的自动装箱和自动拆箱确实提供了一点小方便。但是一旦出问题,还是很痛苦的。
1
2
3
2
3
int x;
HashMap<String,Integer> map = new HashMap<String,Integer>();
x = map.get("hello");
HashMap<String,Integer> map = new HashMap<String,Integer>();
x = map.get("hello");
看上面的代码,看起来还算简介,但是从Integer直接拆箱到int,一个大问题就是,如果HashMap里没有hello,就出错了。
1
2
2
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:15)
at Main.main(Main.java:15)
以上就是出错时的样子,指定的出错行在
1
x = map.get("hello");
通常,这个出错提示的第一反应是map是null,但是实际上确实因为自动拆箱un-boxing引起的。
这就是一个隐藏的bug,而且还要支持一点,这种box 和 un-box 是Java性能的明确的反模式。就是说,对性能不好。
所以还是老实的用Integer吧。
这里还想再唠叨几句,个人觉得,元数据类型的存在是多余的。什么int、float等等。既然java是完全的面向对象,为什么要有这种不是对象的东东?
个人认为使用Integer比int更为合理,而且可以拥有更强的表达力。
0 0
- 慎用自动装箱
- 慎用自动装箱
- 自动装箱
- 自动装箱
- 自动装箱
- 自动装箱
- 自动装箱
- java---自动装箱和自动取消装箱
- 慎用flash 自动套用格式
- 慎用submit自动提交标签
- Autoboxing(自动装箱)
- 自动装箱解箱
- java自动装箱
- 自动装箱总结
- AutoBox:自动装箱
- 自动装箱(Autoboxing)
- java 自动装箱
- JDK5自动装箱/拆箱
- 函数模板,函数模板重载,可变参数模板,函数模板覆盖,通过引用交换数据
- 浅谈HibernateTemplate类的使用
- java substring内存泄露的解决
- chrome 新建标签时的缺省页如何DIY?
- 的副本刚大范甘迪刚刚容易容易和激光焊接
- 慎用自动装箱
- 依赖链接器最小化编译时间(Abusing the Linker to Minimize Compilation Time)
- windows / linux中【FTP命令】的使用
- Android 数据存储 之 SQLite数据库详解
- 高度平衡树 -- AVL 树
- C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲
- Node入门
- 后台模版的网络框架
- 冰女吧女女共和国建国后夫妇回复刚恢复规划符合符合