有没有办法访问两个不同类中的单个对象?
可以说我有课
public class A{
MyClass myObj = new MyClass();
myObj.setValue(x);
}
有没有办法myObj
在另一个类中使用,比如类B
并且能够访问设置的值,即x
无需getX
在类中创建方法A
?
是的你可以。
您可以使对象静态...
public class A{
public static MyClass myObj = new MyClass();
myObj.setValue(x);
}
这可以从任何地方访问 A.myObj
话虽如此,我不太喜欢使用静态。仅在绝对必要时使用。
当存储的数据与类相关联时,您使用静态变量,当与对象相关联时,您使用非静态变量。
可以将它传递给 B 的构造函数。
public class B {
MyClass obj;
B(MyClass obj) {
this.obj = obj;
}
}
那么new B(myObj);
就打电话myObj.getValue();
如果你是这个意思
public class A{
int x; int y;
}
public class B{
A a; int b;
}
好的。这个有可能。
您可以将 x 设置为公共/包范围等(这是关于访问控制的 Java 教程),但我真的不建议这样做。
你为什么不想要一个getX()
访问器?这是一种不错的做法,因为它促进了封装,并且您的实现x
(您有直接引用吗?您是否即时计算它?您是否从缓存中懒惰地加载它?)将来可以更改而无需修改所有客户端类。如果您x
直接访问,那么您将直接公开您的实现。
所以创建一次对象,并将其传递给 A 和 B 的构造函数:
C c = new C();
A a = new A(c);
B b = new B(c);
...
public class A
{
private final C c;
public A(C c)
{
this.c = c;
}
}