请看以下测试程序,为何调用Integer的equals而不是Object的equals?
import java.util.*;class t5
{public static void main(String args[])
{Vector v=new Vector();
Integer i1=new Integer(0),i2=new Integer(1);
v.addElement(i1); v.addElement(i2);
if(v.contains(new Integer(0))) System.out.println("true");
if(v.indexOf(new Integer(0))==0) System.out.println("true");
}
}
import java.util.*;class t5
{public static void main(String args[])
{Vector v=new Vector();
Integer i1=new Integer(0),i2=new Integer(1);
v.addElement(i1); v.addElement(i2);
if(v.contains(new Integer(0))) System.out.println("true");
if(v.indexOf(new Integer(0))==0) System.out.println("true");
}
}
public boolean contains(Object elem) {
return indexOf(elem, 0) >= 0;
}说明contains方法还是调用的indexOf这个方法。
public int indexOf(Object elem) {
return indexOf(elem, 0);
}
public synchronized int indexOf(Object elem, int index) {
if (elem == null) {
for (int i = index ; i < elementCount ; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = index ; i < elementCount ; i++)
if (elem.equals(elementData[i]))
return i;
}
return -1;
}
请注意elem.equals(elementData[i]这句,所以你应该知道问题答案了吧
这时最基本的多态!
建议楼主好好的看看多态!
{public static void main(String args[])
{Integer i=new Integer(0);
if(((Object)i).equals(new Integer(0))) System.out.println("true");
}
}