体验J2SE 1.5新特性之装箱和拆箱 - 编程入门网
传给基本类型的参数包裹类对象
把包裹类对象往基本类型上强制转化时。例如在一个Long型的数据前面加上(long)。 清单15:从包裹类对象到基本类型的强制转化
把包裹类对象当作运算符的操作数时。例如在两个Byte型的数据之间放上“+”号。 清单16:把包裹类对象当作运算符的操作数
用包裹类对象来指定数组的大小时。当然,从语义上说,这个对象的类型必须是Byte、Short、Integer或Character。 清单17:用包裹类对象来指定数组的大小
把包裹类对象在switch语句里使用时。当然,从语义上说,这个对象的类型必须是Byte、Short、Integer或Character。 清单18:在switch语句里使用包裹类对象
把Boolean对象在if/for/while/do-while语句中作为条件表达式使用时。 清单19:把Boolean对象作为条件表达式
体验J2SE 1.5新特性之装箱和拆箱(5)时间:2010-07-086. Auto-Unboxing的局限 Auto-Unboxing的机制则有这样一个局限——只能把包裹类对象往它们对应的基本类型(以及容纳范围更广的类型)上转化。 类似这样的代码是不能工作的,尽管32并未超出byte所能表示的范围: 清单20:不能同时进行Auto-Unboxing和强制向下转型
这是因为编译器并不认可同时进行Auto-Unboxing和强制向下转型的操作,所以这个转化无法进行。如果一定要进行这种操作,需要手工补充一次转型: 清单21:需要先作Unboxing,再强制向下转型
不过同时进行Auto-Unboxing和强制向上转型的操作是没有问题的,所以下面的代码工作得很正常: 清单22:可以同时进行Auto-Unboxing和强制向上转型
7. 其它不能自动转化的情况 除去强制类型转化时的限制之外,还有这样一些情况下不会发生Autoboxing/Auto-Unboxing: 1. 基本类型的数组和包裹类数组之间不会自动转化。这样的代码完全不被编译器接受: 清单23:元素可以,容器不行
2. 不能对着基本类型的表达式来调用包裹类里的方法。这样的申请会被编译器彻底拒绝: 清单24:没有方法,就是没有方法
8. null的转化问题 Java里的引用类型可以有一个特别的取值——“null”。试图对null进行Auto-Unboxing操作会导致一个“NullPointerException”。 例如这段代码就会在运行时抛出异常,尽管在编译 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |