Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到Java单例实例的创建位置?_Java_Singleton_Instance - Fatal编程技术网

如何找到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以在调用构造函数时存储/记录堆栈跟踪。