有没有办法在两个不同的类中访问单个对象?
让我说我有一个班级
public class A{
MyClass myObj = new MyClass();
myObj.setValue(x);
}
有没有办法在另一个类中使用myObj
,比如类B
,并且无需创建x
即可访问设置的值getX
课程A
中的方法?
答案 0 :(得分:1)
是的,你可以。
您可以将对象设为静态...
public class A{
public static MyClass myObj = new MyClass();
myObj.setValue(x);
}
这可以从A.myObj
的任何地方访问话虽如此,我不太喜欢使用静电。只有在绝对必要时才使用。
当存储的数据与类关联时使用静态变量,而当与类关联时,使用非静态数据。
答案 1 :(得分:0)
可以将它传递给B的构造函数。
public class B {
MyClass obj;
B(MyClass obj) {
this.obj = obj;
}
}
所以new B(myObj);
然后只需致电myObj.getValue();
答案 2 :(得分:0)
如果你的意思是
public class A{
int x; int y;
}
public class B{
A a; int b;
}
然后是的。这是可能的。
答案 3 :(得分:0)
您可以将x设置为 public / package-scoped 等(here's the Java tutorial on access control),但我真的不会建议。
为什么不想要getX()
访问者?这是一个不错的做法,因为它促进了封装,你的x
的实现(你有一个直接的引用吗?你在飞行中计算它吗?你从缓存中懒散地加载吗?)可以在未来改变< em>无需修改所有客户端类。如果您直接访问x
,那么您将直接公开您的实施。
答案 4 :(得分:0)
因此,创建一次对象,并将其传递给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;
}
}