Перечисления — различия между версиями
| Sergej (обсуждение | вклад) | Sergej (обсуждение | вклад)   (→Методы работы с перечислениями) | ||
| Строка 45: | Строка 45: | ||
| == Методы работы с перечислениями == | == Методы работы с перечислениями == | ||
| Класс <tex>Enum –</tex> базовый для перечислений | Класс <tex>Enum –</tex> базовый для перечислений | ||
| + | |||
| <tex>name() –</tex> имя | <tex>name() –</tex> имя | ||
| + | |||
| <tex>ordinal()</tex> – номер | <tex>ordinal()</tex> – номер | ||
| + | |||
| <tex>valueOf(Class, name) –</tex> экземпляр по номеру | <tex>valueOf(Class, name) –</tex> экземпляр по номеру | ||
Версия 21:53, 17 июня 2013
Пример
Раньше класс бинарные операции мы делали вот так
public class BinaryOperation {
  public int Plus (int a, int b) {
     return a + b;
  }
  public int Minus (int a, int b) {
     return a - b;
  }
  public int Division(int a, int b) {
     return a / b;
  }
  public int Times (int a, int b) {
     return a * b;
  }
}
Проблема была в том, что пригодилось делать много проверок извне для вызова этих функции. Можно сделать гораздо проще и удобнее
 public enum BinaryOperation {
  Plus("+")  {
    public int calculate(int a, int b){
       return a + b;
    }
  }
   Minus("-")  {
    public int calculate(int a, int b){
       return a - b;
    }
  }
  Division("/")  {
    public int calculate(int a, int b){
       return a / b;
    }
  }
   Times("*")  {
    public int calculate(int a, int b){
       return a * b;
    }
  }
}
abstract public int calculate(int a, int b);
Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре).
Перечисление может реализовывать интерфейсы Также возможно создавать переменные(а не классы).
Методы работы с перечислениями
Класс базовый для перечислений
имя
– номер
экземпляр по номеру
