Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 티스토리챌린지
- Python
- MySQL
- 알고리즘
- StringTokenizer
- programmers
- java.lang 패키지
- 반복문
- 백준
- 오블완
- Programming
- 프로그래머스
- 코딩테스트
- SQL
- 영어원서
- 관계형 데이터베이스
- 소프티어
- softeer
- Java script
- Steve Jobs
- 자바의 정석(기초편)
- 해시
- JavaScript
- Spring Framework
- thinking differently
- Spring
- BFS
- Computer Science
- Java
- nextInt
Archives
- Today
- Total
도라에몽 개발자
열거형(enum) 본문
- 정의
- 관련된 상수들을 같이 묶어둔 것을 의미함.
- Java는 값과 타입을 동시에 확인함으로써, 안전한 열거형을 제공함.
// 무늬(Kind)와 숫자(Value)에 대하여 정의해보자.
class Card {
enum Kind { CLOVER, HEART, DIAMOND, SPACE } // 0, 1, 2, 3
enum Value { TWO, THREE, FOUR } // 0, 1, 2
final Kind kind;
final Value value;
}
if(Card.Kind.CLOVER == Card.Value.TWO) { ... } // 컴파일 에러 발생; 타입이 달라서 비교 불가
- 활용 방법
1) 열거형 타입의 변수 선언
enum 열거형이름 { 상수명1, 상수명2, ... }
열거형이름 변수이름;
2) 열거형 타입의 변수 초기화
변수이름 = 열거형이름.상수명;
3) 열거형 상수 비교 시 사용하는 연산자: ==, compareTo()
- 기본 연산자(>, <)는 사용 불가함.
∵ enum에서 선언되는 값들은 기본값이 아닌, '객체'로 간주되기 때문임. - 열거형의 조상 - java.lang.Enum
- String name(): 열거형 '상수의 이름'을 문자열로 반환함.
- int ordinal(): 열거형 상수가 정의된 '순서'를 반환함.
- T valueOf(Class<T> enumType, String name): 지정된 열거형에서 name과 일치하는 열거형 상수를 반환함.
- values(), valueOf(): 컴파일러가 자동으로 추가하는 메서드로, 특정 열거형 상수를 반환함.
→ values(): 해당 열거형에 정의된 '모든 상수' 출력 시 사용
→ valueOf(): 해당 열거형 상수의 이름으로 문자열 상수에 대한 참조를 얻을 수 있도록 함.
// valueOf() 메서드 사용 예시
Direction d = Direction.valueOf("WEST");
System.out.println(d); // WEST
// 다양한 방법으로 enum 상수값 호출 가능함. 아래 세가지 방법 모두 동일한 결과 출력됨.
enum Direction { EAST, SOUTH, WEST, NORTH }
Direction d1 = Direction.EAST;
Direction d2 = Direction.valueOf("EAST");
Direction d3 = Enum.valueOf(Direction.class, "EAST");
- 열거형에 멤버를 추가하는 방법
- 불연속적인 열거형 상수의 경우, 원하는 값을 괄호() 안에 적으면 됨.
cf. 괄호() 안의 값은 여러 개 넣을 수 있음.
- 괄호()를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해줘야 함.
- 열거형의 생성자의 경우, 무조건 private로 캡슐화 되어야 하기 때문에 외부에서 객체 생성 불가함. ★★★
enum Direction {
EAST(1), SOUTH(5), WEST(-1), NORTH(10); // 열거형 상수 선언
private final int value; // 항상 접근제어자는 'private'으로 선언하고, 상수값을 저장할 iv 추가함.
Direction(int value) { // 매개변수 있는 생성자 추가
this.value = value; // iv값을 매개변수값으로 저장함.
}
public int getValue() {
return value; // iv (value) 값 반환
}
}
'LANGUAGE > Java' 카테고리의 다른 글
쓰레드 (thread) (1) | 2023.11.30 |
---|---|
애너테이션(Annotations) (0) | 2023.11.29 |
지네릭스(Generics) (0) | 2023.11.29 |
Stream API (1) | 2023.11.28 |
Collections Framework (컬렉션 프레임웍) - Collections (0) | 2023.11.28 |