我遇到了这段代码:
for (final String s : myList)
{
s.equalsIgnoreCase(test);
updateNeeded = true;
break;
}
我怀疑这不是程序员真正想做的事情。我相信他的意思是写下:
for (final String s : myList)
{
if(s.equalsIgnoreCase(test))
{
updateNeeded = true;
break;
}
}
但是,我不明白为什么第一个代码段中没有错误。
s.equalsIgnoreCase(test);
因为方法.equalsIgnoreCase(“anoterString”)返回一个布尔值,它没有被赋值给任何东西或在控制流语句中使用
答案 0 :(得分:5)
这只是一个方法调用。你没有拥有来将方法调用的结果用于其他任何事情。
很少忽略非void方法的结果是个好主意(特别是InputStream.read
的返回值有时会被忽略)但是语言规范并没有试图将其称为问题。
答案 1 :(得分:2)
它应该意味着像你想的那样。您可以调用方法而不是分配其结果,因为有时您不需要结果。
答案 2 :(得分:2)
你是对的,这可能是一个错误。但是,Java编译器无法知道equalsIgnoreCase
方法是一个“纯函数”,即没有副作用,除非你保留其返回值,否则没有任何意义。
答案 3 :(得分:1)
大多数编程语言都允许您忽略返回的方法代码。 有时你不关心返回的值,在这种情况下你应该被允许。