簡體   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