我有一个场景,我想设置一个Boolean
对象,然后在方法的后面的构造函数中使用它的booleanValue()
。但是,对象的设置范围不同。它被设置在一个方法中,该方法首先实例化对象。基于我对Java如何传递基元和对象参数以及在线阅读多篇文章(如this)的理解,当一个对象被传入一个方法时,其属性通过引用传递,并且被调用方法的任何改变都应该反映在调用方法执行完成后调用方法。但是我注意到,当被调用方法完成时,那里的任何更改都不会在调用方法中生效。java布尔值在被调用的方法中没有改变
这里是我的方案的快照:
private CustomObject1 callingMethod(){
Boolean b = Boolean.TRUE;
List<CustomObject2> list = this.calledMethod(b);
//Create CustomObject1 with b.booleanValue() as one of the arguments in the constructor
}
private List<CustomObject2> calledMethod(Boolean b){
...
...
if(condition){
b = Boolean.FALSE;
}
...
...
}
通过代码达到CustomObject
创作b.booleanValue()
始终是真实的时候,即使在callingMethod()
if语句是真实的Boolean
设置为false在那个方法。
我不愿意将调用方法的返回类型更改为boolean
,因为它需要更改可能调用此方法的其他代码位。目前他们只需要签名更改,但返回类型的变化需要更多的工作,因为需要维护逻辑(即填充列表,然后使用它进行操作)
该链接非常有见地。我鼓励任何看到这个的Java程序员阅读它。 –