我無法理解這是如何工作Java對象引用和Java方法
public void addToRule(Rule r) {
if (!getRuleList().contains(r)) {
getRuleList().addElement(r);
}
}
如果我運行此代碼:
obj.addToRule(r);
System.out.println(getRuleList().contains(r));
它打印出true
這怎麼可能發生?
btw ruleList是主類的向量成員,不是靜態變量(不要認爲這很重要,但無論如何共享)。
import java.util.Vector;
public class RuleEngine{
private Vector ruleList = new Vector();
public Vector getRuleList(){
return ruleList;
}
public void addToRule(Rule r){
if(!getRuleList().contains(r))
getRuleList().addElement(r);
}
public static void main(String args[]){
RuleEngine re = new RuleEngine();
Rule r = new Rule("Rule1");
re.addToRule(r);
System.out.println(re.getRuleList().contains(r));
}
}
class Rule{
public String name = "";
public Rule(String nam){
this.name=nam;
}
}
確定人們告訴我,這是因爲在Java中通過引用傳遞。我知道了。但我能做些什麼來獲得該對象的副本而不是其參考?
它應該返回true。無論如何,問題是什麼?!重新格式化您的代碼,使其更加可理解,否則其他人會給你-1 ;-) – lzap
我無法理解此行爲 – MozenRath
它不編譯... – dacwe