繁体   English   中英

如何找到创建Java单例实例的位置?

[英]How do I find where an instance of a Java singleton is created?

在一个庞大而复杂的程序中,发现Singleton实例化的代码可能并不简单。 跟踪创建的单例实例以重用它们的最佳方法是什么?

此致,RR

Singleton通常有一个私有构造函数,因此Singleton类是唯一可以实例化唯一的单例实例的类。

singleton class开发人员的责任是确保实例在多个调用中被重用。

作为用户,您不必担心它。

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 ,您喜欢多少次,每次都将它分配给不同的引用。 但是只有一次召唤。

我会使用enum

enum Singleton {
    INSTANCE:
}

或者类似的东西,不能多次实例化并且可以全局访问。

创建/返回单例的命名方法的一般做法是getInstance() 当你无法在代码中找到单例创建的地方时,我不明白这种情况,但是你可以搜索这个方法名。

如果你想捕捉单身人士创造的确切时刻 - 你可以使用AOP AspectJ是java中的一个很好的例子。 您可以在创建类之前/之后执行代码或调用getInstance()方法。

如果您的问题是重新使用创建的单身人士,那么请搜索此网站。 例如

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM