添加和使用新参数来运行

use*_*273 1 java

我有这样的功能:

doSomething(){
  Object a = getA() //can return null
  // a lot of additional code
}
Run Code Online (Sandbox Code Playgroud)

...但我想添加一个方法给对象一个方法,所以我创建了一个新的方法:

doSomething(){
  doSomething(null);
}

doSomething(Object a){
  if(a == null){
    a = getA()
  }  
}
Run Code Online (Sandbox Code Playgroud)

但这是不正确的,因为传递给方法的对象也可以为null然后我想要它为null,而不是使用getA()方法,所以我做了这样的事情:

doSomething(){
  doSomething(null, false);
}

doSomething(Object a, boolean useObject){
  if(!useObject){
    a = getA()
  } 
Run Code Online (Sandbox Code Playgroud)

但这看起来有点难看.有更好的解决方案吗?

Era*_*ran 8

怎么样 :

doSomething()
{
    Object a = getA();
    doSomething(a);
}

doSomething(Object a)
{

}
Run Code Online (Sandbox Code Playgroud)

这样,如果有人打电话给doSomething(null)你,请不要打电话getA().