【发布时间】:2014-07-31 21:15:16
【问题描述】:
使用 Hibernate Criteria,并声明:
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SomeEntity.class);
List<SomeObject> myListOfObjects = detachedCriteria.getExecutableCriteria(session).list();
我如何知道 myListOfObjects 是哪种列表实现? ArrayList, LinkList 等。我之所以问这个是因为我跟踪了所有代码,并且根据官方文档,
DetachedCriteria.getExecutableCriteria(session).list()
返回一个Criteria,应用于Criteria的list()返回一个List:
http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/criterion/DetachedCriteria.html http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Criteria.html
【问题讨论】:
-
如果你仔细阅读,它还说 list() 返回
The list of matched query results,即SomeEntity.Class,使用与您过滤结果的SomeEntity属性匹配的条件进行过滤。 -
为什么返回什么类型的
List很重要?如果您需要特定类型,手动将其转换为该类型会更安全,否则您可以使用List接口定义的方法,知道底层类型实现了它们。 -
Evan Knowles -- 我认为最终程序员需要知道是否有具体的 List 实现;否则,我认为您不能在 List 接口上调用任何方法。这就是我进行跟踪的原因,但我是否正确的是它以某种方式对我隐藏并且我假设它有一个具体的列表类,因此我可以使用 List 接口的方法?