有没有办法创建一个我可以在A类中改变的变量,这些变化会影响另一个班级B会发生什么。希望你理解。
这样的事情:
class A{
public int var = 0;
}
并使用变量var
的值,如下所示:
class B{
if(var == 0)
{
System.out.println("right now, var is equal 0");
}
else if(var == 1)
{
System.out.println("right now, var is equal 1");
}
}
另外正如您所看到的,var不能是静态的,因为我需要在app运行期间更改它的值。
答案 0 :(得分:1)
我会通过在A类中引用B类来实现它,这样A也可以在需要时更改B.例如:
bx_xticks = bx.get_xticks()
bx_xticklabels = [label.get_text() for label in bx.get_xticklabels()]
cx.set_yticks(bx_xticks)
cx.set_yticklabels(bx_xticklabels)
答案 1 :(得分:1)
您可以使用观察者观察到的模式。
public class A extends Observable {
private int var = 0;
public void setVar(int val) {
this.var = val;
notifyObservers();
}
}
public class B implements Observer {
public void init(A a) {
a.addObserver(this);
}
@Override
public void onUpdate(Observable obs, Object arg) {
// Do something when A is updated
if(var == 0) System.out.println("right now, var is equal 0");
else if(var == 1) System.out.println("right now, var is equal 1");
}
}
它的工作方式是A
变为Observable
,这意味着当A
中的某些内容发生变化时,其他类可以更新(A
通知其他类打电话给notifyObservers()
)。然后使用onUpdate()
(此处为Observable
)作为第一个参数调用观察者中的A
方法。如果您使用notifyObservers()
参数调用Object
,则Object
中的onUpdate()
参数将使用该值。
以下是控制流程:
答:setVar - >答:notifyObservers - > B:onUpdate
答案 2 :(得分:0)
虽然其他答案建议的观察者模式实际上是一种更清晰的方法,但鉴于OP似乎甚至没有正确理解Java作为OOP的基本概念(例如对象实例是什么),我相信他在寻找什么for是更基本的东西,它是对另一个对象的引用:
class A {
private int value = 0;
// getters and setters
}
class B {
private A a;
// using constructor to have object reference populated
// is only ONE OF THE WAYS
public B(A a) {
this.a = a;
}
public void foo() {
System.out.println("my referred A value " + this.a.getValue();
}
}
当然你需要正确构建它们。代码中的某处:
A a = new A();
B b = new B(a);
b.foo();
a.setValue(100);
b.foo();