給定一個對象,我們如何檢查一個類是否是Singleton?如何找到一個類是否是來自該對象的單例類?
目前我使用這個
public class SingletonClass implements IsSingleton
其中IsSingleton
是我的單身類實現一個空白的界面。所以這個類可以作爲單例測試
SingletonClass obj = SingletonClass.getInstance();
if(obj instanceof IsSingleton)
System.out.println("Class is Singleton");
else
System.err.println("Class not singleton");
有沒有更好的方法來確定一個單例類。我試過我的方式,通過reflection
但問題是getConstructors()
只返回宣佈公共類。所以它會將一個沒有聲明構造函數的類視爲Singleton。
我不是一個Java專家,但如果以編程測試孤單的路要走,如果一個對象的構造函數是私有或不(通過反射,可能),那我怎麼會做了測試。 – Kristian
@Kristian - 那裏是測試是一種方式,但私有構造並不能保證一類是單。您仍然可以通過靜態方法在所述對象上構建儘可能多的構造。 – jtahlborn
擁有一個私有構造函數並不一定意味着該類被實現爲一個單例。 – birryree