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());
}