Java 1.6. 我扩展了一个类以包含一些方法。现在我想使用扩展后的类来代替基础类。然而,能够使用基础类的类无法“识别”扩展后的类。有什么建议的解决方法吗?
我知道这个问题已经以不同的形式被问过很多次,但我还是弄不明白!
例如- 扩展类SAMRecord
并在此之后使用SAMRecordExt
:
public class SAMRecordExt extends SAMRecord{
public SAMRecordExt(SAMFileHeader header) {
super(header);
}
}
现在,虽然这个可以工作:
SAMRecord rec= sam.iterator().next();
这给了我一个编译错误。
SAMRecordExt recext= sam.iterator().next();
>>> Type mismatch: cannot convert from SAMRecord to SAMRecordExt
毫不意外,这也不起作用(运行时错误):
SAMRecordExt recext= (SAMRecordExt) sam.iterator().next();
>>> Exception in thread "main" java.lang.ClassCastException: htsjdk.samtools.SAMRecord cannot be cast to markDupsByStartEnd.SAMRecordExt
at markDupsByStartEnd.Main.main(Main.java:96)
如何让扩展类能够像基类一样工作?
编辑:更多关于我使用的类的细节。sam对象来自
SamReaderFactory sf = SamReaderFactory.makeDefault();
SamReader sam= sf.open(new File(insam));
完整的文档请参见https://samtools.github.io/htsjdk/javadoc/htsjdk/index.html
。
SAMRecordExt extends SAMRecord
,就不应该出现任何编译错误。 - user207421