Содержание
Перечисления являются списками constants как неизменяемые переменные. Вы слышали о Final keyword ? Это все равно, что.
Когда вам нужен предварительно определенный список значений, представляющих числовые или текстовые данные, используйте перечисление. Например , в шахматной игре вы можете представить различные типы фигур в виде перечисления:
|
1
2
3
4
5
6
7
8
|
перечисление Шахматная фигура {
PAWN ,
Ладья ,
Рыцарь ,
Епископ ,
КОРОЛЕВА ,
Король ;
}
|
Вы должны всегда использовать перечисления, когда переменная (особенно параметр метода) может взять только одно из небольшого набора возможных значений. Примерами могут быть такие вещи, как константы типа (статус контракта: «постоянный», «временный», «ученик») или флаги («выполнить сейчас», «отложить выполнение»).
Если вы используете перечисления вместо целых чисел (или строковых кодов), вы увеличиваете проверку во время компиляции и избегаете ошибок при передаче недопустимых констант, а также документируете, какие значения допустимы для использования.
Пример Java :
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyEnumExample {
общественности перечисление Компания {
EBAY , PAYPAL , GOOGLE , YAHOO , ATT
}
Компания cName ;
общественности CrunchifyEnumExample ( Company cName ) {
это. CNAME знак равно cName ;
}
общественности недействительным companyDetails ( ) {
переключатель ( имя ) {
дело EBAY :
Система. вне. println ( «Крупнейшая рыночная площадь в мире» ) ;
перерыв ;
дело PAYPAL :
Система. вне. println ( «Самый простой способ управлять деньгами.» ) ;
перерыв ;
дело GOOGLE :
дело YAHOO :
Система. вне. println ( «1-я компания Web 2.0» ) ;
перерыв ;
по умолчанию :
Система. вне. println ( «Google — крупнейший поисковый гигант. ATT — мой оператор связи ..» ) ;
перерыв ;
}
}
общественности статический недействительным main ( Строка [ ] аргументы ) {
CrunchifyEnumExample ebay знак равно новый CrunchifyEnumExample ( Company . EBAY ) ;
Ebay . companyDetails ( ) ;
CrunchifyEnumExample PayPal знак равно новый CrunchifyEnumExample ( Company . PAYPAL ) ;
PayPal . companyDetails ( ) ;
CrunchifyEnumExample google знак равно новый CrunchifyEnumExample ( Компания . GOOGLE ) ;
Google. companyDetails ( ) ;
CrunchifyEnumExample yahoo знак равно новый CrunchifyEnumExample ( Company . YAHOO ) ;
Yahoo. companyDetails ( ) ;
CrunchifyEnumExample att знак равно новый CrunchifyEnumExample ( Company . ATT ) ;
АТТ. companyDetails ( ) ;
}
}
|
Выход:
|
1
2
3
4
5
|
Самый большой Рынок в Мир.
Простейший способ Управлять деньгами .
первый Web 2,0 Компания.
первый Web 2,0 Компания.
Google — самый большой поисковый гигант . , ATT — мой провайдер перевозчика. ,
|
Некоторые очень важные моменты на Java Enum:
Point-1
Все перечисления неявно расширяются java.lang.Enum , Поскольку Java не поддерживает множественное наследование , перечисление не может расширять что-либо еще.
Point-2
Enum in Java are type-safe: У Enum есть собственное пространство имен. Это означает, что ваш enum будет иметь тип, например, «Компания» в приведенном ниже примере, и вы не можете назначать никакие значения, кроме указанных в константах Enum.
|
1
2
3
4
5
6
|
общественности перечисление Компания {
EBAY , PAYPAL , GOOGLE , YAHOO , ATT
}
Компания cName знак равно Компания. EBAY ;
CNAME знак равно 1 ; // Ошибка компиляции
|
Point-3
Вы можете указать значения перечисляемых констант во время создания. MyEnum.values() возвращает массив значений MyEnum.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
пакет ком . crunchify. учебник ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyEnumExample {
общественности перечисление Компания {
EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ;
частный ИНТ стоимость ;
частный Компания ( int ценность ) {
это. значение знак равно стоимость ;
}
}
общественности статический недействительным main ( Строка [ ] аргументы ) {
за ( Компания cName : Компания. значения ( ) ) {
Система. вне. println ( «Стоимость компании:» + CNAME. значение + — Название компании: + cName ) ;
}
}
}
|
Выход:
|
1
2
3
4
5
|
Стоимость компании : 30 — Название компании : EBAY
Ценность компании : 10 — Название компании : PAYPAL
Ценность компании : 15 — Название компании : GOOGLE
Ценность компании : 20 — Название компании : YAHOO
Ценность компании : 25 — Название компании : ATT
|
Point-4
Константы перечисления неявно являются статическими и конечными и не могут быть изменены после создания.
Point-5
Enum можно смело сравнивать, используя:
- Положение переключателя
- == Оператор
- Метод .equals ()
|
1
2
3
4
|
Компания eBay знак равно Компания. EBAY ;
если ( eBay == Компания. EBAY ) {
войти. info ( enum in java можно сравнить с помощью == ) ;
}
|
Пожалуйста, следуйте полной инструкции .
Point-6
Вы не можете создать экземпляр перечислений с помощью оператора new в Java, потому что конструктор Enum в Java может быть только закрытым, а константы Enums могут быть созданы только внутри самого Enums.
Point-7
Экземпляр Enum в Java создается, когда любые константы Enum сначала вызываются или упоминаются в коде.
Point-8
Перечисление определяет список постоянных значений, назначенных типу .
Point-9
Перечисление может быть объявлено снаружи или внутри класса, но НЕ в методе.
Point-10
Перечисление, объявленное вне класса, НЕ должно быть помечено как статическое, конечное, абстрактное , защищенное или личное.
Point-11
Перечисления могут содержать конструкторы , методы, переменные и тела констант.
Point-12
Константы enum могут отправлять аргументы в конструктор enum, используя синтаксис BIG (8), где литерал int 8 передается конструктору enum.
Point-13
Конструкторы enum могут иметь аргументы и могут быть перегружены .
Point-14
Конструкторы enum НИКОГДА не могут быть вызваны непосредственно в коде. Они всегда вызываются автоматически при инициализации enum.
Point-15
Точка с запятой в конце объявления enum не обязательна.
Это законно:
- enum Foo {ОДИН, ДВА, ТРИ}
- enum Foo {ОДИН, ДВА, ТРИ};
Еще один простой пример Java eNUM:
Перечисления являются списками констант. Когда вам нужен предварительно определенный список значений, представляющих числовые или текстовые данные, используйте перечисление.
Вы должны всегда использовать перечисления, когда переменная (особенно параметр метода) может взять только одно из небольшого набора возможных значений. Примерами могут быть такие вещи, как константы типа (статус контракта: «постоянный», «временный», «ученик») или флаги («выполнить сейчас», «отложить выполнение»).
Если вы используете перечисления вместо целых чисел (или строковых кодов), вы увеличиваете проверку во время компиляции и избегаете ошибок при передаче недопустимых констант , а также документируете, какие значения допустимы для использования.
Между тем, чрезмерное использование перечислений может означать, что ваши методы делают слишком много (часто лучше иметь несколько отдельных методов, а не один метод, который принимает несколько флагов, которые изменяют то, что он делает), но если вам нужно использовать флаги или коды типов, перечисления путь
Это очень простой пример Java eNum
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
* /
общественности перечисление CrunchifyEnumCompany {
GOOGLE ( G ) , YAHOO ( Y ) , EBAY ( E ) , PAYPAL ( «P» ) ;
частный строка companyLetter ;
частный CrunchifyEnumCompany ( String с ) {
companyLetter знак равно с ;
}
общественности строка getCompanyLetter ( ) {
вернуть companyLetter ;
}
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
пакет ком . crunchify. учебные пособия ;
импорт ком . crunchify. учебники . CrunchifyEnumCompany ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyEnumExample {
общественности статический недействительным main ( Строка [ ] аргументы ) {
Система. вне. println ( Получить значение перечисления для Comapny 'eBay':
+ CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ;
}
}
|
Выход:
|
1
|
Получить enum значение для Comapny «eBay» : Значение : Е
|
0.00 (0%) 0 votes








