我无法理解这是如何工作的
public void addToRule(Rule r) {
if (!getRuleList().contains(r)) {
getRuleList().addElement(r);
}
}
如果我运行此代码:
obj.addToRule(r);
System.out.println(getRuleList().contains(r));
它打印出true
这怎么会发生?
顺便说一句,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 中的引用传递。我得到它。但是我能做些什么来获取该对象的副本而不是它的引用?