体验J2SE 1.5新特性之装箱和拆箱

http://tech.ddvip.com   2006年11月27日    社区交流

本文详细介绍体验J2SE 1.5新特性之装箱和拆箱

  清单18:在switch语句里使用包裹类对象

Character c = new Character('a');
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("A Vowel in English");
break;
default:
System.out.println("Not A Vowel in English");
break;
}

  把Boolean对象在if/for/while/do-while语句中作为条件表达式使用时。

  清单19:把Boolean对象作为条件表达式

Boolean bool = new Boolean(Math.random() > 0.5);
if (bool) {
System.out.println("Aye!");
} else {
System.out.println("Nay!");
}

  6. Auto-Unboxing的局限

  Auto-Unboxing的机制则有这样一个局限——只能把包裹类对象往它们对应的基本类型(以及容纳范围更广的类型)上转化。

  类似这样的代码是不能工作的,尽管32并未超出byte所能表示的范围:

  清单20:不能同时进行Auto-Unboxing和强制向下转型

Integer i = new Integer(32);
System.out.println((byte) i);/* 编译时出错 */

  这是因为编译器并不认可同时进行Auto-Unboxing和强制向下转型的操作,所以这个转化无法进行。如果一定要进行这种操作,需要手工补充一次转型:

  清单21:需要先作Unboxing,再强制向下转型

Integer i = new Integer(32);
System.out.println((byte)(int) i);

  不过同时进行Auto-Unboxing和强制向上转型的操作是没有问题的,所以下面的代码工作得很正常:

责编:豆豆技术应用

正在加载评论...