如何找到Java单例实例的创建位置?
在一个大型的、复杂的程序中,要发现程序中的位置可能并不容易 代码已实例化一个单例。跟踪已创建的单例实例以便重用它们的最佳方法是什么 问候,,如何找到Java单例实例的创建位置?,java,singleton,instance,Java,Singleton,Instance,在一个大型的、复杂的程序中,要发现程序中的位置可能并不容易 代码已实例化一个单例。跟踪已创建的单例实例以便重用它们的最佳方法是什么 问候,, RR单例类开发人员负责确保实例在多次调用中被重用 作为一个用户,你不应该担心它 class Singelton { private static Singelton _singelton = null; private Singelton() { } // NOT usable for Multithreade
RR单例类开发人员负责确保实例在多次调用中被重用 作为一个用户,你不应该担心它
class Singelton
{
private static Singelton _singelton = null;
private Singelton()
{
}
// NOT usable for Multithreaded program
public static Singelton CreateMe()
{
if(_singelton == null)
_singelton = new Singelton();
return _singelton;
}
}
现在,您可以从代码中的任何地方实例化
Singelton
,以及您喜欢的次数,并每次将其分配给不同的引用。但是c'tor只被调用一次。A通常有一个私有构造函数,因此Singleton类是唯一可以实例化一个且唯一的Singleton实例的类。我将使用枚举
enum Singleton {
INSTANCE:
}
或者类似的东西,不能多次实例化并全局访问。创建/返回单例的命名方法的一般做法是
getInstance()
。我不理解在代码中找不到创建Singleton的位置的情况,但是可以搜索这个方法名
如果你想抓住独生子创造的确切时刻,你可以使用。AspectJ是java中的一个很好的例子。您将能够在创建类或调用getInstance()
方法之前/之后执行代码
如果您的问题是关于重用已创建的单例,请搜索此网站 @recolnrelax请您添加一段代码,说明您的实际操作。(我不理解“分配给那个单例的变量”部分)我读得不对。“Singleton类是唯一可以实例化一个且唯一的Singleton实例的类”我现在明白了:p Sorry你想知道哪个调用实例化了Singleton(假设延迟实例化)?如果是这样,您可以修改singleton以在调用构造函数时存储/记录堆栈跟踪。