我有一个Java方法。为了成为一个公共论坛,我要说我的方法叫做foo
Bar foo(Boolean flag)
{
flag = true;
return new Bar();
}
我通过设置标志得到警告。不幸的是,我还没有办法抑制这种警告。这样做有“正确”的方法吗?现在我知道有些人会说不要使用out参数。相信我,当我说我有充分的理由这样做。如果在没有做出疯狂的事情的情况下无法绕过警告,我想这没关系。我只是不喜欢用警告检查代码。
答案 0 :(得分:10)
您收到警告,因为您的作业没有任何用处。您不应该检查此代码,因为它不会执行您认为的操作。例如:
Boolean x = false;
Bar bar = foo(x);
System.out.println(x); // Still false
您的代码正在设置flag
参数的值,该参数不会更改任何有关传入的值.Java 严格使用传递-by-value,包括传递引用的时间(它在这里做)。
如果Boolean
是可变的,你可以写:
// Not actually valid
flag.setValue(true);
并更改第一段代码中x
引用的对象的内容 - 但Java中的所有包装器类型都是不可变的。
现在还不是很清楚你的更高层次的目的是什么,但基本上它不将由你给出的代码完成 - 所以注意警告,并改变你的方法。
答案 1 :(得分:1)
您可以查看Java Annotations:
http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html
“SuppressWarning”注释可以帮助您。
无论如何,一个好的程序不应该包含警告;)
答案 2 :(得分:1)
也许我错了,但是没有一个外部变量与“flag”相似吗? 在这种情况下,调整它是有意义的,并将其用作
this.setFlag(true)
或
this.flag = true;
在其他细节中,Jon给出了很好的答案。