在两个不同的类中使用相同的对象

时间:2013-07-17 09:05:03

标签: java class

有没有办法在两个不同的类中访问单个对象?

让我说我有一个班级

public class A{
MyClass myObj = new MyClass();

myObj.setValue(x);
}

有没有办法在另一个类中使用myObj,比如类B,并且无需创建x即可访问设置的值getX课程A中的方法?

5 个答案:

答案 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;
    }
}