3-й семестр / Лекции / 5 - Презентация 2
.pdfЦентр дистанционного обучения
Лекция 5 Программирование на
Java
ФИО преподавателя: Зорина Наталья Валентиновна e-mail: zorina@mirea.ru,zorina_n@mail.ru
Online-edu.mirea.ru
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
public enum Direction { NORTH, EAST, SOUTH, WEST
}
Direction dir = Direction.NORTH; Direction[] allDirections = Direction.values();
Других значений, кроме перечисленных, в типе Direction нет
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
public enum Direction { NORTH, EAST, SOUTH, WEST
}
Преобразование в строку: Direction dir1 = Direction.NORTH; String n = dir1.name(); // “NORTH”
Преобразование из строки:
Direction dir2 = Direction.valueOf(“SOUTH”);
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
public enum Direction { NORTH, EAST, SOUTH, WEST
}
Direction dir = Direction.NORTH;
int cmp = dir.compareTo(Direction.SOUTH); // -1
Сравнение идет по порядку в перечислении: NORTH < SOUTH
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
Могут иметь поля:
public enum Direction {
NORTH(“Север”), EAST(“Восток”), SOUTH(“Юг”), WEST(“Запад”);
public final String text;
Direction(String text) {
this.text = text;
}
}
String north = Direction.NORTH.text;
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
На самом деле является обычным классом:
public final class Direction extends Enum {
public static final Direction NORTH = new Direction(“Север”);
...
public final String text;
private Direction(String text) {
this.text = text;
}
}
String north = Direction.NORTH.text;
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
Могут иметь методы:
public enum Direction {
NORTH(“Север”), EAST(“Восток”), SOUTH(“Юг”), WEST(“Запад”); public final String text;
Direction(String text) { this.text = text;
}
@Override
public String toString() { return text; }
}
String north = Direction.NORTH.toString();
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
И даже абстрактные методы:
public enum Direction { NORTH {
public String getText() { return “Север”; }
},
EAST {
public String getText() { return “Восток”; }
},
...;
public abstract String getText();
}
String north = Direction.NORTH.getText();
online.mirea.ru
Центр дистанционного обучения
Перечислимые типы
Экземпляры перечислимых типов можно сравнивать с помощью операции == (для других классов нужно использовать метод equals):
Direction dir1 = ...;
if (dir1 == Direction.NORTH) {
...
}
online.mirea.ru
Перечислимые типы
Оператор switch для перечислимых типов:
Direction dir1 = ...;
switch (dir1) {
case NORTH: // Уже не нужно Direction.
System.out.println(“Это север”);
break;
case SOUTH:
System.out.println(“Это юг”);
break;
default:
System.out.println(“Это где-то еще”);
break;
}
Центр дистанционного обучения
online.mirea.ru