【问题标题】:How to keep a Java class in memory during the app execution?如何在应用程序执行期间将 Java 类保留在内存中?
【发布时间】:2018-09-20 01:48:28
【问题描述】:

我知道这是基础知识,但我真的不记得该怎么做。

  1. 在我的MainActivity 中,我用我从我的 数据库。
  2. 而且,我想做的是能够从其他类访问这个 util 类的数据。

例如,我在随机班级,我想从Util 获取属性。我该怎么做?考虑到我不能打电话给new Util()... 因为它会清除我在那个 util 类中的信息。综上所述,如何将一个对象保存在内存中以便从任何地方访问?

【问题讨论】:

  • 使类静态
  • 或者你可以只保留对类的引用,然后检索它。通常,您确实必须在某些时候使用静态方法,但通常最好尽可能多地使用实例。然而,依赖注入是一种替代方法,也可以使用。
  • 如何将类变成静态的?如果我尝试“public static class Myclass”之类的东西,它会给我一个错误
  • 这些其他随机类是在MainActivity中创建的吗?
  • 可能是Creating Objects 上的 Oracle 的 Java 教程有您正在寻找的信息。

标签: java class object variables


【解决方案1】:

将要访问的对象设为静态。您应该阅读有关 static 关键字的基本 Java 教程,因为当您开始处理线程和内存管理等更高级的主题时,使用它可能会导致问题。 (静态 ArrayList 是最糟糕的。)

所以你有一些课程Util:

public class Util {
    private static Map<String, String> data = new HashMap<>();

    // assume you have some logic to populate data

    // This method is static, so you don't need an instance of Util to access it
    public static Map<String, String> getData() {
        return data;
    }
}

静态方法不需要实例即可被调用——您可以针对类本身调用它们。

要从代码中的任何位置访问上例中的data

Map<String, String> theData = Util.getData(); // called against the class

当然,您可以新建一个 Util 实例(例如 Util myUtil = new Util()),然后调用 myUtil.getData() - 但没有区别,如果您尝试,您的 IDE 会警告您正在执行此操作.

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多