如何从其他对象访问特定对象而不在java中传递指向该对象的指针?

时间:2015-07-20 09:31:15

标签: java oop

我有一个对象说A从磁盘加载一些数据,加载需要很长时间。许多其他对象需要它的方法和数据,所以我不希望任何时候我需要它创建一个新的,也不需要通过类构造函数传递它。有没有办法在正在运行的项目开始时只创建一次类A的实例,而所有其他对象都可以访问对象A

如果我的问题重复,我很抱歉,但我不知道哪些关键字与此问题相关,以便找到相关问题。

2 个答案:

答案 0 :(得分:2)

在这种情况下,你正在处理 Singleton Design Pattern 你应该宣布你是这样的类:

public class SingleObject {

   //create an object of SingleObject
   private static SingleObject instance = new SingleObject();

   //make the constructor private so that this class cannot be
   //instantiated
   private SingleObject(){}

   //Get the only object available
   public static SingleObject getInstance(){
      return instance;
   }

   public void showMessage(){
      System.out.println("Hello World!");
   }
}

然后你可以按预期使用它。

实际上,这里的方法是使用static这样的成员:

public class Vehicle {

   private static String vehicleType;

    public static String getVehicleType(){
        return vehicleType;
    }

}
  

static修饰符允许我们使用类名本身访问变量vehicleType和方法getVehicleType(),如下所示:

Vehicle.vehicleType
Vehicle.getVehicleType()

请查看 Java static class Example 以获取更多信息。

答案 1 :(得分:1)

不确定。设计模式称为单例。它看起来像这样:

public class Singleton {
    private static Singleton instance;
    private Singleton () {}

    /*
     * Returns the single object instance to every
     * caller. This is how you can access the singleton
     * object in your whole application
     */
    public static Singleton getInstance () {
        if (Singleton.instance == null) {
            Singleton.instance = new Singleton();
        }
        return Singleton.instance;
    }
}

所有对象都可以通过调用Singleton.getInstance()

来使用单例