java - 使用不受支持的库,导致我进行类型转换

标签 java casting

我必须与这个处理生物多样性标准的图书馆合作。本质上,它读取 csv、xml 等并对其进行验证,从而允许用户迭代 DarwinCoreRecord

类型的记录

出于某种奇怪的原因,一旦对象从迭代器中移出,它就消失了。下面的小例子:

           ArrayList<DarwinCoreRecord> dwc = new ArrayList<DarwinCoreRecord>();
            for(; iter.hasNext();) {
            DarwinCoreRecord record = iter.next();
                    System.out.println(record.getSomeValue());
            dwc.add(record);
        }

该 print 语句非常完美,可以打印出正确的详细信息,如果我在 for 循环之外输出该 print 语句,则所有内容都会为空。

那么,回答我的问题(除非有人能解决上述问题)。我创建了一个扩展此 DarwinCoreRecord 的骨架类。它看起来就像这样:

public class DWCRecordStore extends DarwinCoreRecord {

public DWCRecordStore() {

}
  }

这只是为了测试我的计划是否有效,但我遇到了类广播异常。我已经有一段时间没有处理转换了(至少在 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;

最佳答案

您正在尝试将 DarwinCoreRecord 转换为 DWCRecordStore - 但第一个不是第二个的实例!

DarwinCoreRecord 视为多边形,将 DWCRecordStore 视为正方形,您始终可以将正方形 (DWCRecordStore) 转换为多边形 (DarwinCoreRecord) - 但反之则不然。

您可能正在尝试将从库返回的对象存储为 DWCRecordStore。但该库不熟悉 DWCRecordStore,它仅返回 DarwinCoreRecord 对象,而不是 DWCRecordStore

查明确切的问题可能需要更多代码 - 您到底如何使用新类。

编辑:您的最后一次编辑澄清了这一点,因为 dwc 不是 DWCRecordStore 的实例,因此无法将其转换为一个实例。

另一种方法可能是创建一个构造函数:DWCRecordStore(DarwinCoreRecord),并使用:

drs = new DWCRecordStore(dwc);

关于java - 使用不受支持的库,导致我进行类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11517789/

相关文章:

java - 使用logback-spring.xml时如何保留springboot默认日志

java - PaintComponent 中的 while 语句

java - 将最大和最小 JVM 堆大小设置为相同是否很好?

WPF:在 TreeViewItem 中正确存储对象

java - 如何像浏览器一样在 Java 中组合 URL 片段?

java - 使用 Javapns 的 Apple 推送通知服务

java - Android postDelayed 有效但不能将其置于循环中?

java - 如何将 ArrayList 计数写入 LogCat?

swift - 为什么我不能在Swift中将(String)-> String转换为(Any)-> Any?

java - 如何解决 ClassCastException?也许是 JFileChooser 的类型转换错误