此代码来自Java SCJP6。它来自第7章关于集合的可比接口的主题。 在第4行中,我们将'Object o'转换为DVDInfo类型。我不明白这一点。我们为什么要把它投射到DVDInfo?
class DVDInfo implements Comparable<DVDInfo>{
public int CompareTo(Object o){
DVDInfo d = (DVDInfo) o ;
return title.compareTo(d.getTitle());
}
}
答案 0 :(得分:2)
因为没有演员阵容,您将无法访问DVDInfo
字段/方法。
与第5行中的d.getTitle()
一样。
答案 1 :(得分:0)
这是一个对象和参考问题。 o
是类Object
的引用,它是类DVDInfo
的一个实例。实例仅在执行时读取,而引用在编译时读取。
如果您未将o
投射到DVDInfo
,那么在编译时o
类型为Object
,因此您无法访问其方法,例如getTitle()
。
答案 2 :(得分:0)
CompareTo
的此实现的目的是按标题进行比较。因此,该方法需要访问DVDInfo
类型的对象,但该方法的签名仅提供Object o
。因此需要显式转换以将o
转换为{{1}如果在一个实际上不是DVDInfo d
类型的对象上调用该方法,则将DVDInfo
被移植。