我有一个单例类。
当访问该类的方法时,我有两种选择。
- 将这些方法创建为实例特定的,然后获取该实例并调用它们
- 将这些方法创建为静态方法并调用它们,它们将获取该实例
例如:
Class Test{
private int field1;
Test instance;
private Test(){};
private Test getInstance(){
if (instance == null)
instance = new Test();
return instance;
}
public int method1() { return field1;}
public static int method2() {return getInstance().field1;}
}
现在,我可以在其他地方写入。
int x = Test.getInstance().method1();
int y = Test.method2();
哪个更好? 我可以想到第三种选择,直接在静态方法中使用“instance”,然后捕获异常(如果为null)并实例化它,然后重新调用自身。
理论上,我可以将整个程序都设置为静态。但是,当活动关闭时,序列化不会保存静态内容,这会给我带来问题。
Test.method2();
,因为它表明method2()
是一个静态方法。 - TheVillageIdiot