繁体   English   中英

将对象转换为类类型

[英]Casting Object to class type

此代码来自Java SCJP6。 它来自关于集合的第7章中的“可比较接口”的主题。 在第4行中,我们将“对象o”转换为DVDInfo类型。 我不明白 为什么我们将其投射为DVDInfo?

class DVDInfo implements Comparable<DVDInfo>{
    public int CompareTo(Object o){
        DVDInfo d = (DVDInfo) o ;
        return title.compareTo(d.getTitle());
    }
}

因为如果没有演员表,您将无法访问DVDInfo字段/方法。 像第5行中的d.getTitle()一样。

这是对象和参考的问题。 oObject类的引用,并且是DVDInfo类的实例。 实例仅在执行时读取,而引用在编译时读取。 如果不将o DVDInfo转换为DVDInfo ,则在编译时o的类型为Object ,因此无法访问其方法,例如getTitle()

CompareTo的此实现的目的是按标题进行比较。 因此,该方法需要访问DVDInfo类型的DVDInfo ,但是该方法的签名仅提供Object o
因此,需要显式转换隐蔽oDVDInfo d
如果在实际上不是DVDInfo类型的对象上调用该方法, DVDInfo ClassCastException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM