Java:在各种其他类中使用相同的类实例

时间:2011-10-12 16:18:37

标签: java oop architecture static constructor

这可能是一个愚蠢的问题,但我不知道它的答案,我不知道在哪里搜索答案,所以如果有人可以帮助我会很好。

我有一个类(让我们命名为A),具有不同的成员和方法。我在另一个类中使用此类的方法(让我们将其命名为B)。

对于每个创建的B-Object,我想使用A的SAME实例。这可能吗? 实际上我在B中有一个构造函数,我称之为A a = new A();当然,我总是得到这个班级的不同实例。

我现在该怎么改变这个?我知道可以用spring框架解决它(将相同的对象注入到B的实例中),但我无法使用它。怎么还能解决这个问题?

非常感谢你的帮助! : - )

4 个答案:

答案 0 :(得分:6)

是的,可能。您需要定义一个静态的classA实例,并在任何地方使用它。

所以有多种方法可以做到这一点:

public class ClassA {
   public static ClassA classAInstance = new ClassA();  

}

然后你可以做的任何地方

ClassA.classAInstance.whatever();

这很简单,但对您来说可能已经足够了。

如果您确实想使用单例模式,请查看here以获取Java示例。这种方法的优点是它确保您只有1个classA实例。

答案 1 :(得分:4)

详细说明其他答案:

public class A
{
private static A instance;
private A()
{
    ...
}

public static A getInstance()
{
    if (instance == null)
        instance = new A();

    return instance;
}
...
public void doSomething()
{
    ... 
}
}

然后像这样打电话给B:

A.getInstance().doSomething();

答案 2 :(得分:2)

听起来你可能希望A成为Singleton

  

在软件工程中,单例模式是一种设计模式,用于通过将类的实例化限制为一个对象来实现单例的数学概念。

这意味着您必须修改现有代码以使用某种getInstance()方法,但一旦进行了更改,B类的所有实例都将使用A类的单个实例。

以下是指向simplest example from the above site.

的直接链接

答案 3 :(得分:0)

只需使用静态类并确保它是公开的。