Java 读取列表中的对象;不能投

Java 读取列表中的对象;不能投,java,list,casting,Java,List,Casting,我想我的代码中有一个简单的错误,但我找不到 我有一个对象列表(实体类型),我想读取列表中对象的内容 在我看来: object.get(1).getTitle(); List<HtMeldungen> meldungen = q.getResultList(); List<MeldungsBean> meldungsliste = new ArrayList(); MeldungsBean mb = null; HtMeldungen tempMeldungen = n

我想我的代码中有一个简单的错误,但我找不到

我有一个对象列表(实体类型),我想读取列表中对象的内容

在我看来:

object.get(1).getTitle();

List<HtMeldungen> meldungen = q.getResultList();

List<MeldungsBean> meldungsliste = new ArrayList();
MeldungsBean mb = null;
HtMeldungen tempMeldungen = null;

int i = 0;
int k = meldungen.size() - 1;

for (i = 0; i < k; i++) {
    mb = new MeldungsBean();
    tempMeldungen = (HtMeldungen) meldungen.get(i);

    mb.setTitel(tempMeldungen.getTitle());
    mb.setAutor(tempMeldungen.getAutor());
    mb.setMeldungstext(tempMeldungen.getText());

    meldungsliste.add(mb);
}

有人能帮我吗?

你确定
q.getResultList()
会得到一个包含
HtMeldungen
实例的列表吗? 如果没有,那就行了

List<HtMeldungen> meldungen = q.getResultList();
tempMeldungen = (HtMeldungen) meldungen.get(i);
您得到了异常,因为编译器认为它必须是
HtMeldungen
的实例,而事实并非如此。 试试代码

if (meldungen.get(i) instanceof HtMeldungen) {
  tempMeldungen = (HtMeldungen) meldungen.get(i);
} else {
  throw new RuntimeException("Got instance of class " + meldungen.get(i).getClass());
}
如果你的假设是错误的,那么你会得到一个可以理解的错误

我将得到错误:DBEntities.classic.HtMeldungen无法强制转换为DBEntities.classic.HtMeldungen


由于错误消息表明HtMeldungen的对象不能强制转换为HtMeldungen(这似乎是矛盾的),我认为您可能会在构建中加载两次此类。请检查您的构建路径是否将同一个jar放入构建中两次。这就是通常导致此错误的原因。

此列表中有哪些类型的对象?他们是HtMeldungen还是它的一些扩展?顺便说一句,您应该使用迭代器遍历列表。HtmlDungen是MeldungsBean的子类吗?它是运行时异常还是编译时?按如下方式声明您的列表:
list meldungsliste=new ArrayList()它在q.getResultList()或(HtMeldungen)meldungen.get(i)上失败了吗?你们能打印出一段堆栈跟踪吗?
if (meldungen.get(i) instanceof HtMeldungen) {
  tempMeldungen = (HtMeldungen) meldungen.get(i);
} else {
  throw new RuntimeException("Got instance of class " + meldungen.get(i).getClass());
}