Java Enum Tutorial : 정의 및 구현 방법



Java Enum Tutorial에 대한이 기사는 더 나은 이해를 위해 실제 예제와 함께 Enum 상수에 대한 자세한 지식을 제공합니다.

그만큼 열거 형 각각의 고정 및 명명 된 상수로 클래스를 정의하는 방법입니다. 키워드 사용 열거 형. 이 ' Java Enum 자습서 ”기사, 우리는함께 열거 정의더 나은 이해를위한 예제.

열거 란 무엇입니까?

자바 열거 형 고정 된 상수 세트 또는 변경되지 않는 변수가있는 클래스입니다. Java의 열거는 키워드를 사용하여 수행됩니다. 열거 형. 자바 열거 형 상수는 공전결정적인 암시 적으로. Enum 기능은 JDK 버전 1.5.





열거가 필요한 이유는 무엇입니까?

열거 형 상용구 코드를 피하여 런타임 오류를 방지하기 위해 컴파일 타임 검사에서 형식 안전성을 향상시킵니다. 예를 들어 사용 가능한 최소한의 옵션 중에서 하나의 가능성을 선택해야하는 경우

유형: (계약 / 일시적인 / 영구적 인)



자바 열거 형 튜토리얼 직원

그런 다음 가장 좋은 방법은 열거 형. 때문에 열거 형 스위치에서 쉽게 사용할 수 있습니다. 열거 형 횡단 할 수 있습니다. 열거 형 할 수있다 있다 필드, 생성자 및 메서드. 그 후, 어떤 값을 사용할 수 있는지 이미 문서화 했으므로 컴파일 시간 검사를 늘리고 유효하지 않은 상수 전달로 인한 오류를 방지합니다.

Enum과 Class의 차이점

클래스와 열거 형은 Java 환경에서 유사한 기능을 가지고 있지만 몇 가지 측면에서 다릅니다. 차이점을 논의합시다



열거 형 수업
열거 형 상수는 재정의 할 수 없습니다.클래스 상수를 재정의 할 수 있습니다.
Enum은 개체 생성을 지원하지 않습니다.클래스는 객체 생성을 지원합니다.
Enum은 다른 클래스를 확장 할 수 없습니다.클래스는 다른 클래스를 확장 할 수 있습니다.
열거 형 c구현 인터페이스클래스는 인터페이스를 구현할 수 있습니다.


Enum의 실제 예

이제 enum을 훨씬 더 잘 이해하기 위해 다음을 기반으로 몇 가지 실용적인 예제를 실행 해 보겠습니다.

Java에서 열거 정의

Enum은 클래스 내부 또는 c 외부에서 선언 할 수 있습니다.허락하다. 그러나 어떤 메서드에서도 선언 할 수 없습니다. 구문, 정의 및 선언을 이해하기 위해 간단한 예를 들어 보겠습니다.

통사론:

열거 형 이름 {상수}

이 예에서 우리는 본관() 방법 내부 열거 형

패키지 정의 public class Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Ouput

KTM

이 예에서 본관() 메소드 선언 외부 열거 형

패키지 정의 enum Color {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

//산출:

야마하

스위치 케이스에 사용되는 열거 형

열거 형은 switch 문에서도 사용할 수 있습니다. 모든 case 문은 switch 문에서 사용하는 것과 동일한 열거 형의 상수를 사용해야합니다. 이를 바탕으로 한 예를 살펴 보겠습니다.

여기에서는 요일을 요소로 사용하여 열거 형을 선언하고 일치하는 케이스의 데이터를 인쇄하기 위해 문자열 형태로 데이터를 전달합니다.

package switched enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case 월요일 : System.out.println ( '안녕하세요, 오늘은 월요일입니다') break case 화요일 : System.out.println ( '안녕하세요, 오늘은 화요일입니다') break case WEDNESDAY : System.out.println ( '안녕하세요, 오늘은 수요일입니다 ') break case THURSDAY : System.out.println ('안녕하세요, 오늘은 목요일 ') break case FRIDAY : System.out.println ('Hello, 오늘은 금요일입니다. ') break case SATURDAY : System.out.println (' 안녕하세요, 오늘은 주말입니다 ') 휴식 사례 SUNDAY : System.out.println ('안녕하세요, 오늘은 휴일입니다 ') 휴식 기본값 : System.out.println ('유효한 요일을 입력하세요. ') break}} public static void main (String [] args) {String str = 'MONDAY'Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

//산출:

안녕하세요, 오늘은월요일

enum을 사용한 상속

기본적으로 열거 형 추상 클래스 java.lang을 확장하는 클래스로 표시됩니다. 열거 형 여러 정적 멤버가 있습니다. 따라서 열거 형 다른 클래스를 확장하거나 열거 형 배수가 없다 상속 . 더 나은 방식으로 이해하기 위해 예제를 실행 해 보겠습니다.

여기서는 폰 메이커를 기반으로 한 OS를 상속합니다.

패키지 상속 import java.util.ArrayList import java.util.List public class Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) for (HTTPMethodConvertible element : inherit) {System.out.println (element.getHTTPMethodType ())}} static interface HTTPMethodConvertible {public String getHTTPMethodType ()} static enum LibraryEnum 구현 HTTPMethodConvertible {FIRST ( 'Google Pixel'), SECOND ( 'Huawei'), THIRD ( 'Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} static enum ClientEnum은 HTTPMethodConvertible {huawei ( 'HongMing OS'), apple을 구현합니다. ( 'iOS'), google ( 'Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

//산출:

구글 픽셀
Android One

사용자 지정 값이있는 열거 형

열거 형에는 기본적으로 고유 한 문자열 값이 있으며 일부 사용자 지정 값을 열거 형에 할당 할 수도 있습니다. 아래 예를 살펴 보겠습니다.

enum Traffic {RED ( 'STOP'), ORANGE ( 'WAIT'), GREEN ( 'GO')}

위의 예에서 Traffic 열거 형에 3 개의 멤버가 있음을 알 수 있습니다. 즉,

빨간색, 주황색초록 고유 한 사용자 지정 값이 중지, 기다려가다 각기.

이제 코드에서 동일한 유형의 열거 형을 사용하려면 다음과 같은 몇 가지 사항을 따라야합니다.

  • 우리는 만들어야합니다 매개 변수화 된 생성자 이 열거 형 클래스에 대해. 우리가 알고 있기 때문에 열거 형 클래스의 객체는 명시 적으로 생성 할 수 없으므로 초기화를 위해 매개 변수화 된 생성자를 사용합니다.
  • 그만큼 건축업자 공개되거나 보호받을 수 없습니다. 은밀한 또는 기본 수정 자. 공개 또는 보호를 생성하면 완전히 반대하는 둘 이상의 객체를 초기화 할 수 있습니다. 열거 기능.
  • 값을 얻기 위해 getter 메소드를 만들어야합니다. 열거 형.

이를 기반으로 프로그램을 실행 해 보겠습니다.

package traffic enum TrafficSignal {RED ( 'STOP'), GREEN ( 'GO'), ORANGE ( 'WAIT') private String 액션 public String getAction () {return this.action} private TrafficSignal (String action) {this.action = action}} public class Edureka {public static void main (String args []) {TrafficSignal [] 신호 = TrafficSignal.values ​​() for (TrafficSignal 신호 : 신호) {System.out.println ( 'name :'+ signal.name () + 'action :'+ signal.getAction ())}}}

//산출:

이름 : RED 액션 : STOP
이름 : 녹색 작업 : 이동
남성e : 주황색 동작 : 대기

if-else-if 문의 열거 형

이제 다음을 기반으로 프로그램을 실행하겠습니다. if-else-if 문의 열거 형. 여기에서는 열거 형에서 사용할 수있는 방향 값을 전달하여 순회 방향을 찾습니다.

package 길 찾기 enum 길 찾기 {동쪽, 서쪽, 북쪽, 남쪽} public class Edureka {public static void main (String args []) {길 찾기 dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( '방향 : 동쪽')} else if (dir == Directions.WEST) {System.out.println ( 'Direction : West')} else if (dir == Directions.NORTH) {System.out.println ( 'Direction : 북쪽 ')} else {System.out.println ('방향 : 남쪽 ')}}}

//산출:

말하다ction : 북쪽

열거 형과 함께 사용되는 다른 방법

값 () : 열거 형을 만들 때 자바 컴파일러 내부적으로 값 () 방법. 이 메서드는 정렬 열거 형의 모든 값을 포함합니다.

//통사론:

오름차순으로 배열을 정렬하는 C ++ 프로그램
public static enum-type [] values ​​()

배열에서 특정 요소의 인덱스 값을 알아낼 것입니다.

패키지 값 enum Color {RED, GREEN, BLUE} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() for (Color col : arr) {System.out.println ( col + 'at index'+ col.ordinal ())} System.out.println (Color.valueOf ( 'RED'))}}

//산출:

인덱스 0에서 빨간색
인덱스 1의 녹색
인덱스 2의 파란색
그물

ValueOf () : 메서드는 값이 다음과 같은 열거 형 상수를 반환하는 데 사용됩니다. 이 메서드를 호출하는 동안 인수로 전달됩니다.

//통사론:

public static enum-type valueOf (String str)

여기에서 문자열에 전달하는 입력을 기반으로 특정 전화의 비용을 찾을 수 있습니다.

enum Mobile {Samsung (1099), Apple (1250), Google (1325) int price Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ( '휴대폰 목록 :') for (모바일 m : Mobile.values ​​()) {System.out.println (m + '비용'+ m.showPrice () + '달러' )} 모바일 ret ret = Mobile.valueOf ( 'Samsung') System.out.println ( 'Selected :'+ ret)}}

//산출:

삼성은 1099 달러입니다.
Apple은 1250 달러입니다.
Google은 1325 달러입니다.
선택 : 삼성

서수 () : Java 인터프리터는 서수 () 메서드를 만들 때 내부적으로 열거 형. ordinal () 메서드는 인덱스 열거 형 값의.

//통사론:

public final int ordinal ()

여기서 우리는 배열에있는 특정 요소의 인덱스 값을 알아낼 것입니다. 또한 체리 열매의 위치.

Package ordinal enum Fruits {Apple, Banana, Cherry, Date, Elderberry} enum Vegetables {Carrot, Beetroot, Beans, Tomato, Onion} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. values ​​() for (Fruits fr : fru) {System.out.println (fr + ':'+ fr.ordinal ())} 과일 f1, f2, f3 f1 = Fruits.Apple f2 = Fruits.Cherry f3 = Fruits.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + '는'+ f1) 뒤에옵니다.} 야채 v1 = 야채. 비트 루트 if (f1.equals (v1)) {System.out.println ( ' 잘못됨 ')}}}

//산출:

사과 : 0
바나나 : 1
체리 : 2
날짜 : 3
엘더베리 : 4
체리는 애플 이후

Enum의 장점

  • Java의 열거 형 향상 유형 안전
  • Enum은 다음에서 쉽게 사용할 수 있도록 설계되었습니다. 스위치 케이스
  • 열거 형은 순회
  • 열거 형은 필드, 방법,생성자
  • Enum은 구현할 수 있습니다. 인터페이스
  • Enum은 수업 내부적으로 확장되기 때문에 열거 형 수업

Enum 사용 사례 : Rock, Paper, Scissors Game

우리는 사용할 것입니다 열거 형 어린 시절 게임을 만들기 위해 자바로 가위 바위 보 . 다음 코드는 방법을 설명합니다.

package Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = new Scanner (System.in) System.out.println ( 'nLet us begin ... n') while (! gameOver) {System.out.printf ( '% nScissor-Paper-Stonen') boolean validInput do {System.out.print ( 'nYour 차례 (가위는 s, 종이는 p, 돌은 t, q 종료) : n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar =='q ') {gameOver = true} else if (inChar =='s ' ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} else {System.out.println ( 'n 입력을 확인하고 다시 시도하십시오! n') validInput = false}} while (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ( 'nIt 's My turn : SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ( 'nIt 's My turn : PAPERn')} else {computerMove = HandSign.STONE System.out.println ( 'nIt 's My turn : STONEn')} if (computerMove = = playerMove) {System.out.println ( 'nIt 's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ( 'nScissor cuts paper , 내가 이겼어! n ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println ('nPaper가 돌을 감싸고, 이겼습니다! n ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ( 'nStone breaks scissor, I won! n') ++ numComputerWon} else {System.out.println ( 'nCongratulations. ..! 당신이 이겼습니다! n ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% n 시도 횟수 : '+ numTrials) System.out.printf ('% d (%. 2f %%) 승리했습니다. . % d (%. 2f %%). % n ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println ('안녕!, 즐거웠기를 바랍니다 ..! ' )}}

//산출:

시작합시다 ...
가위-종이-돌
당신의 차례 (가위는 s, 종이는 p, 돌은 t, 종료하려면 q를 입력하십시오) :
에스
내 차례 야 : STONE
스톤 브레이크 가위, 내가 이겼어!
가위-종이-돌
당신의 차례 (가위는 s, 종이는 p, 돌은 t, 종료하려면 q를 입력하십시오) :

시도 횟수 : 1 회 1 승 (100.00 %). 0 (0.00 %)을 얻었습니다.
안녕!, 즐거웠 으면 좋겠다 ..!

이것으로이 Java Enum Tutorial이 끝났습니다. 실시간 예제를 통해 Java의 Enum과 구현을 이해 하셨기를 바랍니다.

이제 이해 했으니 열거 형 이 'Java Enum Tutorial'을 통한 기본 사항은 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate &와 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다. .

질문이 있으십니까? 이 'Java Enum Tutorial'블로그의 댓글 섹션에 언급하시면 가능한 한 빨리 연락 드리겠습니다.