我有一个对象说A
从磁盘加载一些数据,加载需要很长时间。许多其他对象需要它的方法和数据,所以我不希望任何时候我需要它创建一个新的,也不需要通过类构造函数传递它。有没有办法在正在运行的项目开始时只创建一次类A
的实例,而所有其他对象都可以访问对象A
?
如果我的问题重复,我很抱歉,但我不知道哪些关键字与此问题相关,以便找到相关问题。
答案 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()