Java - 我不断丢失对全局类的引用

标签 java global

所以我有一个 Global 类,它应该保存可以从我的所有文件访问的各种数据。 全局看起来像这样:

public class Global{
public static int rules = 0;
public static String data;
public static int score;
public static int speed = 0;
//etc...
}

我通过执行 Global.x = ___ 等操作来设置并获取它。

但是,我最近清理了项目中的内存泄漏,其中我创建的 View (View A) 的生命周期比预期的要长。

View A分配了Global.x

现在,一旦我移动到 View B View A 就会被 GC 回收。

但是,Global.x 不再具有值。

这是 Java 的预期行为吗?如果是这样,我如何从 View A 向我的 Global 类分配一个变量,并确保即使在 View A 死亡后它仍然保留。

或者我只是在其他地方做错了什么?

我想我会问,以防万一我忽略了某些东西,但很可能是后者。

最佳答案

您所说的问题缺少可以帮助您解决特定问题的事实。考虑粘贴您可以创建的能够重现该问题的最小 Java 代码。话虽如此,你的设计很糟糕,你应该考虑使用单例。

public class Global { 

    private Global INSTANCE = new Global();
    private int speed;

    private Global() { 
        // whatever you do to initialize...
        speed = 65;
    }

    public Global getInstance() { 
    }

    public int getSpeed() { 
        return speed;
    }

    public void setSpeed(int speed) { 
        this.speed = speed;
    }
}

无论你在什么范围内,你都可以说:

Global.getInstance().getSpeed();

Global.getInstance().setSpeed(25);

等等...

关于Java - 我不断丢失对全局类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950024/

相关文章:

java - 加密数据库中数据的安全应用程序的体系结构

java - 定义异常类列表 - 类型不匹配错误

java - 使用DataInputStream接收文件信息并写入

php - 在非对象上调用成员函数 fire_query()

Python: 'global' 和 globals().update(var) 之间的区别

c - GTK/C 在函数之间共享数据和变量

java - 使用 Arrays.asList 检查 int 是否在指定枚举值的列表中

java - 如何添加多个小部件?

Python Django 全局变量

python - 带导入的全局变量