Перечисления — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Пример)
(Пример)
Строка 2: Строка 2:
 
Раньше класс бинарные операции мы делали вот так
 
Раньше класс бинарные операции мы делали вот так
 
  public class BinaryOperation {
 
  public class BinaryOperation {
   public int Plus (int a, int b) {
+
   public class Plus  {
 +
    public int calculate (int a, int b){
 
       return a + b;
 
       return a + b;
 +
    }
 
   }
 
   }
   public int Minus (int a, int b) {
+
   public class Minus  {
      return a - b;
+
    public int calculate (int a, int b){
 +
      return a - b;
 +
    }
 
   }
 
   }
  public int Division(int a, int b) {
+
    public class Division  {
      return a / b;
+
      public int calculate (int a, int b){
  }
+
        return a / b;
  public int Times (int a, int b) {
+
      }
      return a * b;
+
    }
 +
    public class Times  {
 +
      public int calculate (int a, int b){
 +
        return a + b;
 +
      }
 
   }
 
   }
 
  }
 
  }

Версия 10:42, 18 июня 2013

Пример

Раньше класс бинарные операции мы делали вот так

public class BinaryOperation {
  public class Plus  {
   public int calculate (int a, int b){
     return a + b;
   }
  }
  public class Minus  {
    public int calculate (int a, int b){
      return a - b;
    }
  }
   public class Division  {
     public int calculate (int a, int b){
       return a / b;
     }
   }
   public class Times  {
      public int calculate (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);

Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре).

Перечисление может реализовывать интерфейсы Также возможно создавать переменные(а не классы).

 public int Operation  {
    BinaryOperation t;
    int x, y;
    return t.calculate(x,y);
 }

Таким образом можно обращаться к перечислению

Методы работы с перечислениями

Класс [math]Enum –[/math] базовый для перечислений

[math]name() –[/math] имя

[math]ordinal()[/math] – номер

[math]valueOf(Class, name) –[/math] экземпляр по номеру