Правила именования enum java

Правила именования enum java

* Информация для продвинутых юзеров. На самом деле возможно ограниченное наследование от Enum. Подробнее здесь: https://kibungo.livejournal.com/19999.html Пример наследования и переопределения общего метода:

 public enum MyEnum < VAL1 < public int returnMyVal()< return 20; >>, VAL2; public int returnMyVal() < return 10; >> ------------------------ System.out.println(MyEnum.VAL1.returnMyVal()) // 20 System.out.println(MyEnum.VAL2.returnMyVal()) // 10 

«По сравнению с обычными классами, на Enum наложили одно серьезное ограничение — от него невозможно наследоваться.» Что за бред вы пишете?! Все перечисления изначально неявно расширяют класс java.lang.Enum, а поскольку в Java нету множественного наследования, то и расширять enum уже больше ничего не может.

В статье enum в коде с маленькой буквы, в комментариях к коду — Enum с большой Почему не говорится, что это разные вещи? Если у нас несколько enum`ов с перечислениями в приложении и нам нужно передать один из них как аргумент в метод можно сделать просто так someMethod(Enum e) < и здесь написать условие для выбора одного из enum`ов >Т.е. не нужно приводить все enum`ы к единому интерфейсу или абстрактному классу, чтобы выбрать один из enum`ов Как я понял Enum(тот который с большой буквы) — это что-то типа пустого интерфейса для всех enum`ов

 @Override public String toString() < return "DayOfWeek'; 

В коде приведенного примера про школьника есть ошибка: задано поле private ScholarSchedule schedule, но сеттер для него не прописан, а так как оно изначально не инициализировано, получаете NullPointerException. Добавьте сеттер (либо просто сделайте это поле public, что есть костыль) для задания значения:

 public void setSchedule(ScholarSchedule schedule)

Ну или, в конце концов, поместите метод main в класс Scholar (видимо так и задумывалось автором примера изначально), тогда он будет иметь доступ к private ScholarSchedule schedule и сможет инициализировать его надлежащим образом.

Читайте также:  Python binary file search

Источник

Java Enum — перечисления в Java

Перечисление (enum) в Java — это тип данных, который позволяет определить набор констант с заданными значениями.

Перечисления могут быть использованы для создания списка возможных значений, которые могут использоваться в вашей программе. Например, если вы пишете программу для управления автомобилем, то вы можете создать перечисление с возможными состояниями двигателя, такими как «Запущен», «Выключен» и «Перегрев».

Вот пример объявления простого перечисления в Java:

enum DayOfWeek < MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY >public class EnumExample < public static void main(String[] args) < DayOfWeek day = DayOfWeek.MONDAY; System.out.println("Today is " + day); >>

В этом примере мы создаем перечисление DayOfWeek , которое содержит названия всех дней недели. Затем мы создаем переменную day типа DayOfWeek и присваиваем ей значение MONDAY .

Затем мы выводим строку в консоль, используя переменную day , чтобы показать текущий день недели. Результат выполнения этого кода будет следующим:

Преимущества использования перечисления Java

Использование перечисления в Java имеет несколько преимуществ:

  1. Читаемость кода: перечисления представляют собой набор логически связанных констант, что делает код более читаемым и понятным для других разработчиков.
  2. Безопасность типов: перечисления позволяют объединить набор констант под одним типом, что предотвращает ошибки типов данных в коде.
  3. Проверка наличия значений: перечисления обеспечивают возможность проверки наличия значений в наборе констант, что позволяет обнаруживать ошибки на этапе компиляции.
  4. Использование в switch-конструкции: перечисления могут использоваться в конструкции switch, что делает код более читаемым и удобным для обработки различных сценариев.
  5. Расширяемость: перечисления могут содержать методы, что позволяет расширять функциональность перечисления в будущем.

В целом, использование перечисления в Java улучшает читаемость кода, обеспечивает безопасность типов данных и делает код более расширяемым и удобным для обработки различных сценариев.

Лучшие практики для Java Enum

Вот несколько лучших практик для использования перечисления (enum) в Java:

  1. Используйте перечисления для представления констант: перечисления могут использоваться для представления констант в вашем приложении, таких как цвета, размеры, типы документов и т.д.
  2. Используйте UPPERCASE для именования перечислений и констант: согласно стандартам кодирования в Java, имена перечислений и констант должны быть написаны заглавными буквами.
  3. Используйте методы в перечислениях: перечисления могут содержать методы, что позволяет добавлять дополнительную функциональность к перечислению.
  4. Используйте конструкторы для установки значений: вы можете использовать конструкторы в перечислениях для установки значений констант.
  5. Используйте switch-case для обработки перечислений: switch-case является удобным способом для обработки перечислений в вашем коде.
  6. Используйте перечисления для безопасной работы с типами: вы можете использовать перечисления в качестве типов данных в вашем коде для предотвращения ошибок типов данных.
  7. Используйте аннотации для описания перечислений: вы можете использовать аннотации для добавления дополнительной информации к перечислению, такой как описание или значения по умолчанию.
  8. Используйте перечисления для управления конфигурацией: вы можете использовать перечисления для управления настройками приложения, таких как настройки базы данных или настройки пользовательского интерфейса.

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

Примеры использования Java Enum

Вот несколько примеров использования перечислений (enum) в Java:

Представление констант: перечисления могут использоваться для представления констант в вашем приложении. Например, вы можете использовать перечисление для представления цветов:

Управление конфигурацией: перечисления могут использоваться для управления настройками приложения. Например, вы можете использовать перечисление для установки типа базы данных:

Свойства объекта: перечисления могут использоваться для определения свойств объекта. Например, вы можете использовать перечисление для определения типа автомобиля:

class Car < enum Type < SEDAN, SUV, HATCHBACK >private Type type; public Car(Type type) < this.type = type; >public Type getType() < return type; >>

Добавление функциональности: перечисления могут содержать методы, что позволяет добавлять дополнительную функциональность к перечислению. Например, вы можете использовать перечисление для определения дней недели и добавить метод для получения следующего дня:

Обработка перечислений в switch-конструкции: вы можете использовать перечисления в конструкции switch, чтобы обработать различные сценарии в вашем коде. Например, вы можете использовать перечисление для определения типа операции в калькуляторе:

enum Operation < ADD, SUBTRACT, MULTIPLY, DIVIDE >public static double calculate(double x, double y, Operation operation) < switch (operation) < case ADD: return x + y; case SUBTRACT: return x - y; case MULTIPLY: return x * y; case DIVIDE: return x / y; default: throw new IllegalArgumentException("Unsupported operation: " + operation); >>

В целом, перечисления могут использоваться для представления констант, управления конфигурацией, определения свойств объекта, добавления функциональности и обработки перечислений в switch-конструкциях в вашем Java-коде.

Шаблоны проектирования с Java Enum

Стратегия (Strategy)

Стратегия (Strategy) — это шаблон проектирования, который позволяет выбирать алгоритм во время выполнения программы. С помощью Java Enum, можно реализовать стратегию следующим образом:

public enum Strategy < STRATEGY1 < @Override public void execute() < // execute strategy 1 >>, STRATEGY2 < @Override public void execute() < // execute strategy 2 >>; public abstract void execute(); >

В этом примере Strategy представляет собой перечисление, которое содержит две стратегии ( STRATEGY1 и STRATEGY2 ). Каждая стратегия имеет свою реализацию метода execute() , которая может быть вызвана по имени.

Фабрика (Factory)

Фабрика (Factory) — это шаблон проектирования, который позволяет создавать объекты без явного указания их класса. С использованием Java Enum, можно создать фабрику следующим образом:

public enum Factory < PRODUCT1 < @Override public Product create() < return new Product1(); >>, PRODUCT2 < @Override public Product create() < return new Product2(); >>; public abstract Product create(); >

В этом примере Factory представляет собой перечисление, которое содержит два продукта ( PRODUCT1 и PRODUCT2 ). Каждый продукт имеет свою реализацию метода create() , который возвращает новый объект продукта.

Итератор (Iterator)

Итератор (Iterator) — это шаблон проектирования, который позволяет последовательно обходить элементы коллекции без знания ее внутреннего устройства. С использованием Java Enum, можно реализовать итератор следующим образом:

public enum Iterator < FIRST < @Override public Iterator next() < return SECOND; >>, SECOND < @Override public Iterator next() < return THIRD; >>, THIRD < @Override public Iterator next() < return null; >>; public abstract Iterator next(); >

В этом примере Iterator представляет собой перечисление, которое содержит три элемента ( FIRST , SECOND и THIRD ). Каждый элемент имеет свою реализацию метода next() , который возвращает следующий элемент в последовательности, либо null , если достигнут конец последовательности.

Состояние (State)

Состояние (State) — это шаблон проектирования, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. С использованием Java Enum, можно реализовать состояние следующим образом:

public enum State < STATE1 < @Override public void handle() < // handle state 1 setState(STATE2); >>, STATE2 < @Override public void handle() < // handle state 2 setState(STATE1); >>; private static State currentState = STATE1; public static void setState(State newState) < currentState = newState; >public static State getState() < return currentState; >public abstract void handle(); >

В этом примере State представляет собой перечисление, которое содержит два состояния ( STATE1 и STATE2 ). Каждое состояние имеет свою реализацию метода handle() , который изменяет текущее состояние и выполняет определенное поведение. Методы setState() и getState() позволяют установить и получить текущее состояние.

Это лишь некоторые примеры шаблонов проектирования, которые можно реализовать с помощью Java Enum. В целом, использование перечислений может существенно упростить код и улучшить его читаемость и поддерживаемость.

Сравнение с другими вариантами

ava Enum предоставляет ряд преимуществ по сравнению с другими вариантами реализации констант:

  1. Java Enum является типобезопасным. Каждый элемент перечисления имеет свой собственный тип, что предотвращает ошибки при передаче несовместимых значений в методы или присваивании значения переменной неправильного типа.
  2. Java Enum может иметь поля и методы. Это позволяет определять более сложную логику и использовать ее в разных частях приложения.
  3. Java Enum поддерживает перегрузку методов. Это означает, что разные элементы перечисления могут иметь свою собственную реализацию методов с одним и тем же именем, что позволяет более гибко управлять поведением программы.
  4. Java Enum может реализовывать интерфейсы. Это позволяет использовать перечисления в качестве аргументов методов, которые ожидают объекты, реализующие определенный интерфейс.
  5. Java Enum имеет собственные методы, такие как values() , valueOf() , name() и ordinal() , которые облегчают работу с перечислениями.
  6. Java Enum предоставляет механизмы для сериализации и десериализации, что позволяет сохранять и восстанавливать состояние объектов перечисления.
  7. Java Enum предоставляет возможность использования в switch-выражениях, что упрощает написание кода и делает его более читаемым.

В целом, Java Enum является мощным и гибким инструментом, который позволяет определять константы и реализовывать различные шаблоны проектирования в более удобном и элегантном виде.

Заключение

Java Enum представляет собой мощный и гибкий механизм для определения констант и реализации различных шаблонов проектирования в Java. Использование перечислений может существенно упростить код и улучшить его читаемость и поддерживаемость.

Java Enum предоставляет множество возможностей, таких как типобезопасность, поддержку полей и методов, перегрузку методов, реализацию интерфейсов, механизмы для сериализации и десериализации, а также возможность использования в switch-выражениях.

В целом, использование Java Enum может значительно улучшить качество кода и сделать его более читаемым и поддерживаемым.

Источник

Оцените статью