Как сохранить класс Java в памяти во время выполнения приложения? - PullRequest
0 голосов
/ 20 сентября 2018

Я знаю, что это основы, но я действительно не помню, как это сделать.

  1. В моем MainActivity я заполняю класс Util данными, полученными из моей базы данных.
  2. И я хочу получить доступ к данным этого класса утилит из других классов.

Например, я в случайном классе и Iхочу получить атрибут от Util.Как мне это сделать?Учитывая, что я не могу вызвать new Util() ... потому что он очистит информацию, которую я имею в этом классе утилит.Таким образом, как сохранить объект в памяти, к которому можно получить доступ отовсюду?

1 Ответ

0 голосов
/ 20 сентября 2018

Сделайте объект, к которому вы хотите получить доступ, статическим.Вы должны прочитать базовый учебник по Java о статическом ключевом слове, потому что его использование может вызвать проблемы, когда вы начнете работать с более сложными темами, такими как потоки и управление памятью.(Статические массивы - это худший .)

Итак, у вас есть класс 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 предупредит вас, что вы делаете это, если попытаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...