Перечисления
Пример
Раньше класс бинарные операции мы делали вот так
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);
}
Таким образом можно обращаться к перечислению
Методы работы с перечислениями
Класс базовый для перечислений
имя
– номер
экземпляр по номеру