是否可以通过引用传递我的类属性的引用? 例如:
public class Myclass{
private Boolean FRinCreation=false,
NFRinCreation=false,
DSinCreation=false,
FRinEdit=false,
NFRinEdit=false,
DSinEdit=false;
List<Boolean> getTabBools(ETargetReq req){
switch (req){
case ETR_FUNCTIONAL:
return Arrays.asList(FRinCreation, FRinEdit);
case ETR_NONFUNCTIONAL:
return Arrays.asList(NFRinCreation, NFRinEdit);
case ETR_DATASET:
return Arrays.asList(DSinCreation, DSinEdit);
case ETR_UNKNOWN:
return null;
default:
return null;
}
}
boolean otherFunction(){
//Change the FRinCreation to true
getTabBools(ETR_FUNCTIONAL).set(0, true);
}
不幸的是,如果我执行它,这不会将我的class属性值设置为true。你能帮助我吗?我对javas传递值感到有点困惑。
答案 0 :(得分:1)
在Java中,所有对象都通过引用传递,而不是基本数据类型 例如int,boolean,double。
通过引用传递的含义是什么:
在您的示例中,FRinCreation
变量指向堆上的布尔对象。
此后,您将这些对象存储在列表中,List
是对象保持对象引用列表。
当您在索引0处设置值时,它将更新索引0处的引用,指向FRinCreation为其他内容。
FRinCreation
仍然指向错误的原因。
底线是: 如果您希望更改对象值,则更改对象内的属性而不是对象引用。