我必须与这个处理生物多样性标准的图书馆合作。本质上,它读取 csv、xml 等文件并对其进行验证,允许人们遍历DarwinCoreRecord类型的记录
出于某种奇怪的原因,一旦对象从迭代器中移出,它就消失了。下面的小例子:
ArrayList<DarwinCoreRecord> dwc = new ArrayList<DarwinCoreRecord>();
for(; iter.hasNext();) {
DarwinCoreRecord record = iter.next();
System.out.println(record.getSomeValue());
dwc.add(record);
}
该打印语句是完美的,并且打印出正确的细节,如果我在 for 循环之外输出该打印语句,则所有人都有空值。
所以,关于我的问题(除非有人能解决上述问题)。我创建了一个扩展此 DarwinCoreRecord 的骨架类。它看起来完全像这样:
public class DWCRecordStore extends DarwinCoreRecord {
public DWCRecordStore() {
}
}
这只是为了测试我的计划是否可行,但我得到了一个 classcastexception。自从我处理强制转换(至少在 Java 中)以来已经有一段时间了,但我没有发现任何问题。我没有从 DWCRecordStore 投射到 DarwinCoreRecord,所以我看不到问题所在。
有没有人看到我错过的任何明显的东西?
提前致谢。
编辑:对不起,错误在这里:
java.lang.ClassCastException: org.gbif.dwc.record.DarwinCoreRecord cannot be cast to com.encima.DWCRecordStore
at com.encima.DroolsTest.main(DroolsTest.java:37)
编辑 2:添加了我对铸件的使用。
DWCRecordStore drs = new DWCRecordStore();
DarwinCoreRecord dwc = iter.next();
drs = (DWCRecordStore) dwc;