core java书中的一个程序片断:
其中Employee为Manager的超类
二者都实现了接口Comparable,即 public interface Comparable
{
int compareTo(Object otherObject);
}下面是Manager中实现的compareTo方法
public int compareTo(Object otherObject)
{
if(otherObject instanceof Manager)
{
Manager other=(Manager)otherObject;
}
else if(otherObject instanceof Employee)
{
return 1;
}
else
return -((Comparable)otherObject).compareTo(this);
}我想问的是:最后一个return的调用的compareTo是那个类实现的
其中Employee为Manager的超类
二者都实现了接口Comparable,即 public interface Comparable
{
int compareTo(Object otherObject);
}下面是Manager中实现的compareTo方法
public int compareTo(Object otherObject)
{
if(otherObject instanceof Manager)
{
Manager other=(Manager)otherObject;
}
else if(otherObject instanceof Employee)
{
return 1;
}
else
return -((Comparable)otherObject).compareTo(this);
}我想问的是:最后一个return的调用的compareTo是那个类实现的
是因为otherObject是以Object类型传进来的,为了调用otherObject自己的compareTo,就需要把它转换为本来的类型,但又不知道它是什么类型,所以用Comparable类型转换就可以达到这个效果?
otherObject不总是可以转成Comparable对象,即不能保证传入的参数肯定实现了Comparable接口
那么,程序之所以这样写((Comparable)otherObject).compareTo(this);
是因为otherObject是以Object类型传进来的,为了调用otherObject自己的compareTo,就需要把它转换为本来的类型,但又不知道它是什么类型,所以用Comparable类型转换就可以达到这个效果?