试图避免返回NULL时出现类型安全警告

4
在Eclipse中,我正在编写一个方法,该方法执行一系列操作并最终需要返回一个由参数Element生成的列表。如果这个列表为空,那么我希望该方法返回一个空列表。这是为了避免在每个地方都需要使用if(list != null)检查,因为for语句可以处理空列表。
我是这样做的:
return tempList == null ? Collections.EMPTY_LIST : tempList;

然而,这会产生以下警告:

类型安全:类型List的表达式需要未经检查的转换才能确认为List<Element>

Eclipse建议的所有解决方案都无法解决问题。我猜问题出在Collections.EMPTY_LIST返回一个通用列表,但不知道如何解决。

3个回答

7

谢谢,这个方法很管用,只要我按照以下方式操作:List<Element> emptyList = Collections.emptyList(); return tempList == null ? emptyList : tempList;猜测无法避免使用本地变量,因为你需要知道类型。 - Sven
既然你现在有两行代码,我会这样写:if(tempList == null) tempList = Collections.emptyList(); - yshavit

7
如果您真的想避免本地变量声明,请使用此语法。
return elements == null ? Collections.<Element>emptyList() : elements;

0
为什么不直接返回 new ArrayList<Element>() 呢?

4
这取决于客户端如何使用返回的列表。如果客户端代码将对其进行修改(例如添加),则返回一个新列表是唯一可行的方法。如果不是,则Collections.emptyList()更易读,并减少不必要的新对象创建。 - Rangi Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接