Java如何在if语句中评估此类代码?

时间:2014-02-16 12:13:49

标签: java

这有两件事。它将一个项目添加到列表中,同时添加,还会评估该项目是否存在于列表中,并显示一条消息。这是某种现实世界的做法,还是应该把它视为黑客?它如何在后端工作。

if(!list.add(value)) {
   //message
}

虽然我会做这样的事情。

boolean res = list.add(value);
    if (!res) {
//print out a message
}

2 个答案:

答案 0 :(得分:2)

这不是黑客; List.add()返回boolean(即操作是否成功)。

然而,许多人会认为你的代码段中的代码是一种令人不愉快的编码风格(即隐藏在表面看来是条件检查的副作用)。将其拆分为两行将是首选方法:

final boolean success = list.add(value);
if (!success) {
    // message
}

(当然,这里的价格增加了详细程度。)

答案 1 :(得分:0)

除现有答案外。

List#add将始终返回true,因为它是无界的并且可以包含重复项。如果要添加已在集合中的元素,Set#add可能会返回false。因此,您可以使用Collection#add方法的结果来检查您添加的元素是否更改了集合。