gpt4 book ai didi

java - 通过静态方法访问单例的字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:52 24 4
gpt4 key购买 nike

我有一个单例类。

访问类的方法时,我有两种选择。

  1. 创建那些特定于实例的方法,然后获取实例并调用它们
  2. 将这些方法创建为静态方法并调用它们,它们将获得实例

例如:

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();

哪个更好?我可以想到第三种选择,我直接在静态方法中使用“实例”,然后捕获异常(如果它为 null)并实例化它,然后重新调用自身。

从理论上讲,我可以将所有内容都设为静态。但是,这会在 Activity 关闭时保存状态时给我带来问题,因为序列化不会保存静态。

最佳答案

我认为第一个更干净。

但是,请记住,在某些极端情况下,Android 可能会终止您的静态实例。例如:http://code.google.com/p/acra/ .

我在某个地方找到了一个解决方法,就是在 Application 类中也保留对您的单例的引用。不过,我不知道这是如何解决问题的。

关于java - 通过静态方法访问单例的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8643705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com