Нумерованные типы
(Created page with "<div style='max-width:700px;text-align:justify;'> {|align="right" |[http://forum.asistech.org/viewforum.php?f=11 Форум] |} Назад | [[Core Java...") |
Revision as of 11:54, 4 April 2015
Форум |
Назад | Оглавление | Дальше
Нумерованные типы
Начиная с JDK 5.0 поддерживаются нумерованные типы:
public enum Weapon { LANCE, SWORD, CLUB, BOW };
Тип Weapon является классом. Возможно существование всего четырех экземпляров этого класса. Другие объекты создать нельзя.
Нумерованные значения можно сравнивать оператором ==
Нумерованный тип может содержать конструкторы, методы и поля.
Конструктор вызывается только при создании нумерованных констант:
enum Weapon { LANCE("L"), SWORD("S"), CLUB("C"), BOW("B"); private Weapon(String abbreviation) { this.abbreviation = abbreviation; } public String getAbbreviation() { return abbreviation; } private String abbreviation; }
Нумерованный тип реализуется с помощью подклассов класса Enum, и наследует от него ряд методов:
- toString() - возвращает имя нумерованной константы:
String s = Weapon.LANCE.toString(); // s = "LANCE"
- valueOf() - преобразует строку в экземпляр класса:
Weapon s = (Weapon) Enum.valueOf(Weapon.class, "LANCE"); // s = Weapon.LANCE
Нумерованный тип содержит статический метод values(), возвращающий массив всех нумерованных значений:
Weapon[] values = Weapon.values();
В отличие от Class, Enum допускает указание типа.
Например, тип Weapon на самом деле преобразуется в Enum<Weapon>
Использование нумерованных типов:
import java.util.*; public class EnumTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Enter a weapon: (LANCE, SWORD, CLUB, BOW) "); String input = in.next().toUpperCase(); Weapon weapon = Enum.valueOf(Weapon.class, input); System.out.println("Weapon = " + weapon); System.out.println("abbreviation = " + weapon.getAbbreviation()); if (weapon == Weapon.BOW) { System.out.println("Good choice!"); } } } enum Weapon { LANCE("L"), SWORD("S"), CLUB("C"), BOW("B"); private Weapon(String abbreviation) { this.abbreviation = abbreviation; } public String getAbbreviation() { return abbreviation; } private String abbreviation; }
Форум |
Назад | Оглавление | Дальше