永久java对象
我想知道(必须有一个简单的解决方案)是否有一种方法可以生成许多对象,并在其他类和这些类中的对象中使用它们,而不必更新它们(在Java中)。例如: 类A、B和C构成对象A、B和C。 然后我有类D,它构成对象D。 现在我想在a中使用d,改变它,在b中使用d,在那里改变它,在c中使用d,并且仍然有a和b的所有变化。 我知道在函数中使用d作为参数并返回d是可能的,但这在我正在编写的程序中是没有用的 有什么帮助吗 好的,我的代码示例:永久java对象,java,object,permanent,Java,Object,Permanent,我想知道(必须有一个简单的解决方案)是否有一种方法可以生成许多对象,并在其他类和这些类中的对象中使用它们,而不必更新它们(在Java中)。例如: 类A、B和C构成对象A、B和C。 然后我有类D,它构成对象D。 现在我想在a中使用d,改变它,在b中使用d,在那里改变它,在c中使用d,并且仍然有a和b的所有变化。 我知道在函数中使用d作为参数并返回d是可能的,但这在我正在编写的程序中是没有用的 有什么帮助吗 好的,我的代码示例: public class A { D d = new D ();
public class A {
D d = new D ();
A(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class B {
D d = new D ();
B(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class C {
D d = new D ();
C(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class D {
public int x=0;
public void add (int y){
x +=y;
}
}
// in main class:
D d = new D();
A a = new A(d);
B b = new B(d);
C c = new C(d);
a.add();
b.add();
c.add();
// d.x should give 15 now.
我想你的意思是根据你的描述。看看
它仅在需要类D的单个实例时有效,但可以创建单个实例来存储其他对象的引用。希望这能有所帮助。我不确定我是否理解正确-如果您纠正语法错误,您发布的代码完全符合您的要求(
d.x
为15)
以下是一个应该有效的版本:
public class A {
D d;
A(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class B {
D d;
B(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class C {
D d;
C(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class D {
public int x=0;
public void add (int y){
x +=y;
}
}
// in main class:
D d = new D();
A a = new A(d);
B b = new B(d);
C c = new C(d);
a.add();
b.add();
c.add();
// d.x should give 15 now.
如果希望d
保持不变而不是改变(例如,结尾处d.x==0
),可以执行以下操作之一:
- 在A、B、C的构造函数中克隆参数
,这样每个参数都有自己的dObject
对象D
- 使
不可变,并让其D
方法返回一个新的add
对象。D
、A
、B
的C
方法将实现add
d=d.add(5)代码>