Enum class란?
우리가 흔히 상수를 정의할 때 final static string 과 같은 방식으로 상수를 정의를합니다. 하지만 이렇게 상수를 정의해서 코딩하는 경우 다양한 문제가 발생됩니다.
따라서 이러한 문제점들을 보완하기 위해 자바 1.5버전부터 새롭게 추가된 것이 바로 "Enum" 입니다.
Enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다.
기존에 상수를 정의하는 방법이였던 final static string 과 같이 문자열이나 숫자들을 나타내는 기본자료형의 값을 enum을 이용해서 같은 효과를 낼 수 있습니다.
- 상수(常數, constant)란 수식에서 변하지 않는 값을 뜻한다. 이것은 변하는 값 변수와 반대이다.
Enum의 장점
Enum을 사용하면서 우리가 얻을 수 있는 이점은 다음과 같습니다.
1. 코드가 단순해지며, 가독성이 좋습니다.
2. 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장됩니다.
3. enum class를 사용해 새로운 상수들의 타입을 정의함으로 정의한 타입이외의 타입을 가진 데이터값을 컴파일시 체크한다.
4. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 알 수 있습니다.
package EnumExample;
public class EnumExample {
// 기존에 상수를 정의하는 방법
public static final String MALE = "MALE";
public static final String FEMALE = "FEMALE";
public static void main(String[] args) {
String gender1;
gender1 = EnumExample.MALE;
gender1 = EnumExample.FEMALE;
// MALE, FEMALE이 아닌 상수 값이 할당 될 때 //컴파일시 에러가 나지 않음. -> 문제점 발생.
gender1 = "boy";
Gender gender2;
gender2 = Gender.MALE;
gender2 = Gender.FEMAL;
// 컴파일 시 의도하지 않는 상수 값을 체크할 수 있음.
// Enum으로 정의한 상수값만 할당 받을 수 있음.
gender2 = "boy";
}
}
// enum class를 이용해 Gender라는 새로운 상수들의 타입을 정의한다.
enum Gender {
MALE,
FEMAL;
}
enum class의 인스턴스를 따로 생성하지 않고 바로 MALE, FEMALE 접근하였는데. 내부적으로 생략되었을 뿐 다음 class와 같습니다.
static이 생략되었을 뿐 엄연히 enum class 안에 정의된 상수들은 static 변수 효과를 나타내는 것이죠.
class Gender{
public static final Gender MALE = new Gender();
public static final Gender FEMALE = new Gender();
}
연관된 글:
참고 :
https://limkydev.tistory.com/50
https://github.com/jojoldu/blog-code/tree/master/enum-settler
'개발 > Java' 카테고리의 다른 글
[Java] 삼항 연산자 (0) | 2023.03.19 |
---|---|
[Java] 접근 제어자 (Access Modifier)와 캡슐화(encapsulation) (0) | 2023.03.16 |
[JAVA] String 과 String Buffer, StringBuilder 의 차이 (0) | 2023.02.21 |
[JAVA] 정규표현식 (0) | 2023.02.21 |
batch (0) | 2023.02.19 |