我正在尝试修改一个类中的对象,但是要使这些更改持续到调用该类并传递该对象的类。这是一些使它更清楚的代码。
我有一个名为AddCourseForm的类,这是它的构造函数:
public AddCourseForm(CourseData c) {
addOrEdit = 0; //default add mode
initComponents();
courseList = c;
}
其中courseList是一个
private CourseData courseList;
我想要做的是在AddCourseForm类中使用courseList(添加,删除内容),但是这些更改将保留到传递给构造函数的
CourseData c
上,但是我不确定在这里做什么。我知道如果直接将CourseData c
传递给方法,那么如何使更改持久化,而不是这种方式。 最佳答案
您需要做的就是在传递给CourseData
类的AddCourseForm
对象中设置值。
考虑以下示例:
public class RefTest {
private static class Ref {
/* Don't do this in real life, public fields are bad practice.
* just done here for sake of example.
* make a getter and setter at the very least.
*/
public int someInt;
}
private static class RefMod {
private Ref r;
public RefMod(Ref r) {
this.r = r;
}
public void setRefInt(int newInt) {
r.someInt = newInt;
}
}
public static void main(String[] args) {
Ref ref = new Ref();
ref.someInt = 11;
System.out.println(ref.someInt);
RefMod refMod = new RefMod(ref);
refMod.setRefInt(42);
System.out.println(ref.someInt);
final Ref fRef = new Ref();
fRef.someInt = 300;
System.out.println(fRef.someInt);
refMod = new RefMod(fRef);
refMod.setRefInt(500);
System.out.println(fRef.someInt);
}
}
输出将是:
11
42
300
500
您在构造函数中传递的
CourseData
只是对对象的引用。该引用不会在调用方中更改。假定引用的CourseData
对象中的数据字段是可变的且可见的,则它们可以更改。您会注意到,即使在我的示例中,第二个
Ref
,fRef
被声明为final,它的someInt
字段仍然可以被修改。