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

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

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

  9. 对重载的影响

  Java支持“重载”的机制,允许在同一个类拥有许多名称相同而形参列表不同的方法。然后,由编译器根据调用时的实参来选择到底要执行哪一个。

  Autoboxing/Auto-Unboxing机制的引入,稍微增加了一些作这种选择时要考虑的因素——因为可能会有一个方法,既有一个能接受一个Integer型参数的版本,又有一个能接受一个int型参数的版本,而Autoboxing/Auto-Unboxing机制能自动的把实参在这两种类型之间转化,光凭原有的判断规则,二者是难以取舍的。但是,因为同时有这两个版本的做法完全合情合理,又不能在这里给出一个“reference to 被调用的方法名 is ambiguous”的编译错误来推卸责任。这就需要增加一条新的判断规则。

  这条新增的规则是,不用进行Autoboxing/Auto-Unboxing的版本,优先于需要进行Autoboxing/Auto-Unboxing的版本。

  因此,在这种情况下具体选择哪一个,要看传递的实参最初是什么类型。

  清单27:不用进行Autoboxing/Auto-Unboxing的版本优先

public class OverloadingTest
{
private static void testOverloading(int i){
System.out.println("int");
}
private static void testOverloading(Integer i){
System.out.println("Integer");
}
public static void main(String[] args)
{
int i = 1;
Integer j = new Integer(1);
testOverloading(i);/* 输出“int” */
testOverloading(j);/* 输出“Integer” */
}
}

  10. 值相等和引用相等

责编:豆豆技术应用

正在加载评论...