-
[Java] enum언어/Java 2021. 1. 1. 19:51
enum(열거) 타입은 소스 파일을 생성하고 해당 파일에 작성을 진행합니다. 소스 파일이나 enum 타입 이름은 관례적으로 단어의 첫 글자는 대문자로 지정하고 enum의 상수는 전부 대문자로 연결하고 여러 단어는 언더바(_)로 연결합니다.
enum(열거) 타입은 아래와 같이 선언합니다.
package com.company; public enum Member { LOGIN_SUCCESS, LOGIN_FAILED // 세미콜론 생략가능 }
enum 타입은 참조타입이기 때문에 null을 할당할 수 있습니다.
Member success = Member.LOGIN_SUCCESS; Member failed = null;
위 설명과 같이 enum 상수는 각각이 객체로 생성이라서 힙 영역에 생성이 되고 메소드 영역에서 생성된 힙 영역의 각 주소값을 가지고 있습니다.
위의 선언과 같은 경우, success는 스택 영역에 선언이 되고 LOGIN_SUCCESS가 참조하고 있는 주소값을 복사받아 동일한 힙영역의 객체를 가리킵니다. 따라서 아래와 같은 비교를 진행하면 true가 나오게 됩니다.
Member success = Member.LOGIN_SUCCESS; success == Member.LOGIN_SUCCESS // 동일한 메모리 주소값을 가지므로 가리키는 객체가 같음
아래와 같이 description과 같은 기능도 제공할 수 있습니다.
public enum Member { LOGIN_SUCCESS("로그인 성공 enum"), LOGIN_FAILED("로그인 실패 enum"); private final String description; Member(String description) { this.description = description; } public String getDescription() { return this.description; } } .... Member s = Member.LOGIN_SUCCESS; Member s1 = Member.LOGIN_FAILED; System.out.println(s); System.out.println(s.getDescription()); System.out.println(s1); System.out.println(s1.getDescription()); // LOGIN_SUCCESS // 로그인 성공 enum // LOGIN_FAILED // 로그인 실패 enum