【发布时间】:2020-09-29 15:48:24
【问题描述】:
我有一个罐子,里面有一个类。我将一个 jar 作为库添加到项目中。类是公共的并且具有公共构造函数。有必要确保类将在单个实例中初始化。如何在不更改 jar 文件的情况下做到这一点?
【问题讨论】:
-
一种方法是将构造函数设为私有,并使用公共工厂方法创建类的单个实例
-
感谢您的回答,但我想我无法更改 jar 文件。 UPD:我将此信息添加到问题中
我有一个罐子,里面有一个类。我将一个 jar 作为库添加到项目中。类是公共的并且具有公共构造函数。有必要确保类将在单个实例中初始化。如何在不更改 jar 文件的情况下做到这一点?
【问题讨论】:
如果 jar 类是具有公共构造函数的公共类,则无法阻止其他人创建新实例。
您可以使用单例包装类来使公共类不那么明显:
public class MyClass extends JarClass {
private static MyClass instance = new MyClass();
private MyClass(){ super(); } // create instance of jar class
public static MyClass getInstance(){
return instance;
}
}
【讨论】: