关于arraylist:Java返回一个空列表 |
您所在的位置:网站首页 › java返回一个list › 关于arraylist:Java返回一个空列表 |
我有我的Java方法作为下面. 123456789public List findAll(String lang) { Query query = entityManager.createNamedQuery("Lookup.findAll"); if (isValidLang(lang)) { query.setParameter("lang", lang); return query.getResultList(); } else { //return empty list } }现在该方法returns名录的有效匹配的大厅。 但如果那不是我想要的情况,返回一个空荡荡的大名单。我的问题是我如何更新代码与什么是最好的方式,比一个空荡荡的归来,并不列出代码不会不? 应该这样做: 123} else { return Collections.emptyList(); } 相关讨论 如果函数调用方想要修改返回的列表,则返回new ArrayList()。 对于给定的例子来说,这可能是一个坏主意…如果客户端修改返回的列表,它将强制它们进行复制。new ArrayList(findAll(...))。最好不要随机混合不可变的。你的回答也不能解释emptyList抛出异常。 如果是我的话,我会声明方法返回一个EDCOX1,3个,但是Java的盒子里没有这样的东西。 完美回答迈克!Collections.emptyList()返回一个不可变的列表,即如果要对列表执行任何操作,则不能向其中添加元素的列表,然后创建新的列表实例并返回它。 123456if (isValidLang(lang)) { query.setParameter("lang", lang); return query.getResultList(); } else { return new ArrayList(); // return array list instance. }使用Java 9,现在可以使用静态工厂方法list::of创建不可变的空列表: 123} else { return List.of(); }尝试如下: 123456789public List findAll(String lang) { List result = new ArrayList(); Query query = entityManager.createNamedQuery("Lookup.findAll"); if (isValidLang(lang)) { query.setParameter("lang", lang); result = query.getResultList(); } return result; }号 使用java中的ternary operator (boolean_expression ? statement1 : statemetn2 )可以检查每个返回类型是否为null。如果我们这样做一次,那么使用代码的每一个调用方法都会受益,因为它们不必检查null。你的代码可以这样重写- 1234567891011public List findAll(String lang) { Query query = entityManager.createNamedQuery("Lookup.findAll"); ArrayList lookupList = null; if (isValidLang(lang)) { query.setParameter("lang", lang); lookupList = query.getResultList(); } return (null != lookupList ? lookupList : Collections.EMPTY_LIST); }。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |