java tutorial - Руководство Java Enum - учебник java - java programming - учиться java - java basics - java for beginners



1- Что такое Java Enum?

  • enum в Java является ключевым словом, свойство которое используется чтобы представить фиксированное число. Например день недели, планета в Солнечной системе и т.д.
  • enum в Java был представлен в JDK 1.5 и является новым свойство в J2SE 5 с autoboxing и unboxing, Generics, varargs и static import.
  • Теперь, нам нужно посмотреть до того как появился enum, что делала java в определенных случаях:

WeekDayConstants.java

package org.wikitechy.tutorial.beforej5;
 
// This class defines the constants are the days of the week.
public class WeekDayConstants {
 
  public static final int MONDAY = 2;
  public static final int TUESDAY = 3;
  public static final int WEDNESDAY = 4;
  public static final int THURSDAY = 5;
 
  public static final int FRIDAY = 6;
  public static final int SATURDAY = 7;
  public static final int SUNDAY = 1;
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Класс с симулированным методом возвращает название работы соответствующей дню недели. (Как расписание).

Timetable.java

package org.wikitechy.tutorial.beforej5;
 
public class Timetable {
 
  // Returns name of Job will do
  public static String getJob(int dayInWeek) {
      if (dayInWeek == WeekDayConstants.SATURDAY
              || dayInWeek == WeekDayConstants.SUNDAY) {
          return "Nothing";
      }
      return "Coding";
  }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Это понятно, что такой код небезопасен. Например когда вы нечаянно вводите совпадающие значения для дней недели. Или вызывате функцию Timetable.getJob(int), но вводите значения непринадлежащие предопределенным значениям.
  • Небезопасный вид: Для начала, это небезопасный вид, вы можете вызвать метод getJob(int) и ввести любое значение int.
  • Не имеет значения в распечатке: Если вы хотите распечатать дни недели, то это будут числа вместо слов со значением, например "MONDAY".
  • И это код обработки в Java5:

WeekDay.java

package org.wikitechy.tutorial.javaenum;
 
public enum WeekDay {
   MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

Timetable.java

package org.wikitechy.tutorial.javaenum;
 
public class Timetable {
 
  public static String getJob(WeekDay weekDay) {
      if (weekDay == WeekDay.SATURDAY || weekDay == WeekDay.SUNDAY) {
          return "Nothing";
      }
      return "Coding";
  }
 
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

2- Можно использовать оператор == для сравнения элементов enum

  • Enum это ссылочный объект как класс, интерфейс, но можно использовать так же как сравнение ==.
  • Посмотрим как сравнивают ссылочные объекты:
// To compare the reference object, generally used method equals (..)
Object obj1 = .... ;
 
// Comparing object with null, can use the == operator
if(obj1 == null)  {
  
}
 
Object obj2 = ....;
// Not null
if (obj1 != null)   {
   // Comparing two objects.
   if(obj1.equals(obj2))   {
        
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • С Enum, вы можете использовать оператор == для сравнения.

CompareEnumDemo.java

package org.wikitechy.tutorial.javaenum;
 
public class CompareEnumDemo {
 
  public static void main(String[] args) {
 
      WeekDay today = WeekDay.SUNDAY;
 
      // Use the == operator to compare two elements of Enum
      if (today == WeekDay.SUNDAY) {
          System.out.println("Today is Sunday");
      }
  }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

3- Enum можно использовать как параметр в команде switch

  • Так же как примитивные виды данных (int,float,..) Enum может использовать некоторые параматры в команде switch.
  • Посмотрим пример:
  • Так же как примитивные виды данных (int,float,..) Enum может использовать некоторые параматры в команде switch.
  • Посмотрим пример:
package org.wikitechy.tutorial.javaenum;
 
public class SwitchDemo {
 
   public static void main(String[] args) {
       WeekDay day = WeekDay.THURSDAY;
 
       switch (day) {
       case MONDAY:
           System.out.println("Working day");
           break;
       case SATURDAY:
       case SUNDAY:
           System.out.println("Holiday");
           break;
       default:
           System.out.println(day);
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

4- Получение элементов Enum

  • Мы можем получить все элементы Enum, используя метод values(). Смотрите иллюстрацию:

ValuesDemo.java

package org.wikitechy.tutorial.javaenum;
 
public class ValuesDemo {
 
   public static void main(String[] args) {
 
 
       // Get all the elements of the Enum.
       WeekDay[] allDays = WeekDay.values();
 
       for (WeekDay day : allDays) {
           System.out.println("Day: " + day);
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Результаты запуска примера:
 Javadoc console application
java - джава - учиться java - учебник java -
Javadoc console application
- примеры java - java-программы

5- Enum может иметь конструктор и метод

  • Enum может иметь кострукторы и методы. Конструкторы для инициализации объектов внутри enum, невозможно вызвать снаружи. Давайте посмотрим иллюстрированный пример:

Gender.java


 
public enum Gender {
 
 
   // Initialize the elements from Constructor.
   // The element is always final, static
   MALE("M", "Male"), FEMALE("F", "Female");
 
   private String code;
   private String text;
 
   // Constructor of Enum internal use only
   // Modifier of constructor is private
   // If you do not declare private, java alway understand is private.    
   private Gender(String code, String text) {
       this.code = code;
       this.text = text;
   }
 
 
   // Static method return Gender by code.
   public static Gender getGenderByCode(String code) {
       for (Gender gender : Gender.values()) {
           if (gender.code.equals(code)) {
               return gender;
           }
       }
       return null;
   }
 
   public String getCode() {
       return code;
   }
 
   public void setCode(String code) {
       this.code = code;
   }
 
   public String getText() {
       return text;
   }
 
   public void setText(String text) {
       this.text = text;
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

GenderDemo.java

package org.wikitechy.tutorial.javaenum;
 
public class GenderDemo {
 
  public static void main(String[] args) {
 
      Gender marryGender = Gender.FEMALE;
 
      System.out.println("Code: " + marryGender.getCode());
      System.out.println("Text: " + marryGender.getText());
 
      // Gender[].
      for (Gender gender : Gender.values()) {
          System.out.println(gender.getText());
      }
      
      
      String code ="M";
      Gender gender= Gender.getGenderByCode(code);
      
      System.out.println("Gender by code: "+ gender);
  }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Результаты запуска примера:
 Javadoc гендерной демо
java - джава - учиться java - учебник java -
Javadoc гендерной демо
- примеры java - java-программы

6- Переопределить метод в Enum

  • Вы можете переопределить метод toString() унаследованный от класса Object.

Currency.java

package org.wikitechy.tutorial.javaenum;
 
public enum Currency {
 
  VND, USD, EURO ;
 
  @Override
  public String toString() {
      if (this == VND) {
          return "Dong";
      } else if (this == USD) {
          return "Dola";
      }
      return super.toString();
  }
 
  public static void main(String[] args) {
      Currency money = Currency.USD;
 
      System.out.println("Money " + money);
      System.out.println("Money " + money.toString());
      System.out.println("VND " + Currency.VND);
      System.out.println("EURO " + Currency.EURO);
  }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Результаты запуска примера:
 java приложение валюты
java - джава - учиться java - учебник java -
java приложение валюты
- примеры java - java-программы

7- Абстрактный метод в Enum

Color.java

package org.wikitechy.tutorial.javaenum;
 
public enum Color {
 
  RED("red") {
      @Override
      public String getHexCode() {
          return "#ff0000";
      }
  },
  GREEN("green") {
      @Override
      public String getHexCode() {
          return "#00ff00";
      }
  },
  BLUE("blue") {
      @Override
      public String getHexCode() {
          return "#0000ff";
      }
  };
 
  private String name;
 
  Color(String name) {
      this.name = name;
  }
 
  public String getName() {
      return name;
  }
 
 
  public abstract String getHexCode();
 
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

Related Searches to Руководство Java Enum