我想在Java / Hibernate中使用泛型。
这就是我一直在研究的一些书籍的方式:
List messages = session.createQuery("from Message").list();
System.out.println("Found " + messages.size() + " message(s).");
我不喜欢那种方法。我更喜欢使用泛型。
List<Message> messages = session.createQuery("from Message").list();
System.out.println("Found " + messages.size() + " message(s).");
但话说回来,我仍然在编辑器上收到“黄色”警告信息。
Eclipse建议我使用@SuppressWarnings来抑制警告或推断泛型类型参数。我不确定后者意味着什么。但是哪个选项成为使用Hibernate处理泛型的首选方法?
答案 0 :(得分:2)
遗憾的是,方法Query#list()
确实在Hibernate版本3.5.6-Final中返回了一个原始列表。这意味着,如果没有编译器警告,您无法将此方法的结果分配给类型为List<Message>
的变量。您可以将结果分配到的唯一通用类型是List<?>
。 Eclipse总是建议推断类型参数选项。
话虽如此,与Eclipse总是使用方法范围不同,我建议为清洁代码分配范围SuppressWarnings注释:
// Call to a raw method
@SuppressWarnings("unchecked")
List<Message> messages = session.createQuery("from Message").list();