我正在开发一个项目,但遇到了问题,我不知道在类之间共享更新数据的最佳方法。我当前执行此操作的方法是在其中包含类的静态实例,并让所有其他类更改该实例而不是原始类。
public class A{
public static volatile instance;
public B b = new B();
public C c = new C();
public D d = new D();
public A(){
this.instance = this;
b.changeData();
}
}
public class B{
public void changeData(){
A.instance.d.changeSomethingInD();
}
}
现在,B 和 C 都可以访问 D 对其变量所做的所有更改。有更好的方法吗?
编辑1:我遇到的问题是所有其他类都可以访问更新的变量。这就是我之前所做的:
public class MainClass extends JavaPlugin{
private RegionLoader rLoader;
private ClassesLoader cLoader;
private MessageHandler mHandler;
private PlayerDates pDates;
public MainClass(){
dirMaker();
mHandler = new MessageHandler(this);
pDates = new PlayerDates(this);
cLoader = new ClassesLoader(this);
rLoader = new RegionLoader(this);
}
//getters and setters
}
但问题是,如果 RegionLoader 本身发生了一些变化,ClassesLoader 将不会有更新的变量,并且会使用旧的变量,或者会吗?
最佳答案
为什么不直接将 A
传递到 B
的构造函数中。这样您就不需要使用静态数据。
public class A{
public B b;
public C c = new C();
public D d = new D();
public A(){
b = new B(this);
b.changeData();
}
}
public class B{
private A a;
public B(A a){
this.a = a;
}
public void changeData(){
a.d.changeSomethingInD();
}
}
您还可以检查观察者模式。
关于java - 在java中的类之间共享更新数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227079/