我可以找到许多关于java方法参数的按引用传递和按值传递的信息,但不能找到以下类型的信息,即在另一个method2中修改method1参数,同时在method1中将其设置为自身。
public class TestQDoc {
public QDoc method1(QDoc doc) {
doc = (QDoc) method2(doc);
return doc;
}
public QDoc method2(QDoc doc) {
doc.x = 100;
return doc;
}
public static void main(String [] args) {
QDoc doc = new QDoc();
doc.x=200;
TestQDoc tq = new TestQDoc();
doc=tq.method1(doc);
System.out.println(doc.x);
}
static class QDoc {
public Integer x;
}
}上面的代码按照预期打印了100。我不确定方法参数是通过引用传递的还是通过值传递的。另外,有没有可能method1无法在method2中返回修改后的文档?
发布于 2019-08-06 00:02:49
Java总是按值传递的。不幸的是,当我们传递对象的值时,我们传递的是对它的引用。
您正在传递一个对象并修改其内部字段,但对该对象的引用保持不变。
https://stackoverflow.com/questions/57361402
复制相似问题