Рубрики
Без рубрики

Перечисления для Android: Хорошо это или плохо?

Разработчики Android часто задаются вопросом об эффективности “перечислений Java” в их приложениях для Android. Действительно ли можно использовать перечисления Java? Они на самом деле хорошие или плохие?

Автор оригинала: Vatsal Bajpai.

Разработчики Android часто задаются вопросом об эффективности “перечислений Java” в их приложениях для Android. Действительно ли можно использовать перечисления Java? Они на самом деле хорошие или плохие? Прежде чем перейти к удобству использования, давайте посмотрим, как работают перечисления (сокращение от “Перечисление”):

Как написано Oracle, ” Тип перечисления-это специальный тип данных, который позволяет переменной быть набором предопределенных констант. ‘ Это означает, что переменной присваивается постоянное значение в наборе значений этого типа перечисления. Давайте рассмотрим пример:

public enum Snacks {
  NACHOS,
  FRIES,
  COOKIES;
}

Таким образом, теперь каждый элемент является частью набора перечислений со статическим постоянным значением. Но как мы можем быть в этом уверены? Давайте сделаем что-нибудь “халтурное”!

Компиляция приведенного выше перечисления закусок:

javac Snacks.java

и разборка полученного файла класса с помощью java:

javap Snacks.class

дает следующее:

public final class Snacks extends java.lang.Enum{
    public static final Snacks NACHOS;
    public static final Snacks FRIES;
    public static final Snacks COOKIES;
    public static Snacks[] values(); 
    public static Snacks valueOf(java.lang.String); 
    static {}; 
}

Следовательно, мы видим, что все переменные статичны, и статические переменные занимают память независимо от того, используются они или нет, и не собираются сборщиком мусора Java; если только соответствующий класс не удален, поскольку они имеют область действия по всей программе.

Таким образом, статическая переменная в вашем приложении для Android может выглядеть непривлекательно, но статика не всегда плоха. Чтобы использовать любую общую переменную, нам нужно создать объект ее класса. Но если этот объект создается несколько раз, Сборщик мусора должен собирать его снова и снова, поэтому, возможно, было бы лучше использовать перечисления. Если такого условия нет, то вы должны как можно больше избегать перечислений.

Оригинал: “https://www.codementor.io/@code_crusher/android-enums-good-or-bad-du1085b9d”