是的,我知道还有另一个类似的问题,但我的问题是我的参数是对象。
public void serStuff(OBJ x, OBJ y)
if (x== null)
{
x = ANOTHER_VALUE;
}
if(y == null)
{
y = ANOTHER_VALUE2;
}
所以它不喜欢我分配参数,但我该如何解决这个问题呢?我会在本地放置另一个对象吗
答案 0 :(得分:0)
修复它的最简单方法就是停止分配参数,因为从该方法返回后它无论如何都没有效果。
但有时这样做仍然有用,例如:
public void doSomething(String s){
if (s == null){
s = "";
}
s.callSomeMethodsAvoidingNullPointerException();
}
如果您无法更改checkstyle配置,则可以创建另一个变量:
public void doSomething(String s){
String sNotNull = s;
if (sNotNull == null){
sNotNull = "";
}
sNotNull.callSomeMethodsAvoidingNullPointerException();
}
这看起来有些笨拙。如果经常出现这种模式,我宁愿更改配置。但这也可能是一种非常主观的观点。
答案 1 :(得分:0)
使用局部变量进行检查。喜欢:
OBJ localX = (x == null) ? ANOTHER_VALUE : x;
然后处理新变量。
因此,您将localX
指向同一个对象或新的ANOTHER_VALUE
。
如果您只需要检查给定参数是否为空,您也可以使用assert(x != null)
。
另一方面,如果有时您需要确保参数不会被更改,请使用final
。这(大致!)相当于C const
,编译器" bites"如果你试图改变它。