JAVA

[JAVA] enum (last update : 2022.01.13 )

k9e4h 2018. 5. 4. 18:59

enum이란? 관련있는 상수들의 집합.

어떤 클래스가 상수만으로 작성되어 있으면 반드시 class로 선언할 필요가 없다.

이때 class대신 enum이라고 선언하면 "객체는 상수의 집합이다"라는 것을 명시적으로 나타냄

enum = enumeration

 

코드가 단순해지며 가독성이 좋다.

인스턴스 생성과 상속을 방지한다.

키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼수 있다.

 

enum의 생성자는 private,

고정된 상수들의 집합으로 런타입이 아닌 컴파일타임에 모든 값을 알고있어야한다. 그래야지 다른 패키지나 클래스에서 enum 타입에 접근해서 어떤 값을 줄지 정할 수 있다.

결국 enum 타입은 인스턴스 생성을 제어하며 싱글톤을 일반화한다.

 

enum에는 메서드를 작성할 수 있다.

 

enum 활용하여 if문 사용 줄이기

public enum PowerSwitch {
	ON("켜짐"),
    OFF("꺼짐");
    
    private String krName;
    
    private PowerSwitch(){}
    
    private PowerSwitch(String krName){
    	this.krName = krName;
    }
    
    public String getKrName(){
    	return krName;
    }
    
    public PowerSwitch opposite() {
    	if(this == PowerSwitch.ON) {
        	return PowerSwitch.OFF;
        } else {
            return PowerSwitch.ON;
        }
    }
}
public class PowerSwitchMain {
        //
	public static void main(String[] args) {
		PowerSwitch powerSwitch = PowerSwitch.ON;
		displayByPowerSwitch(powerSwitch.opposite());		
	}
	
	public static void displayByPowerSwitch (PowerSwitch powerSwitch){
		if(powerSwitch == PowerSwitch.ON){
			System.out.println("전원을 on 합니다.");
		}else{
			System.out.println("전원을 off 합니다.");
		}
	}
}

 

 

 

 

http://www.nextree.co.kr/p11686/

 

https://bluepoet.me/2012/07/18/%EB%B2%88%EC%97%AD%EC%9E%90%EB%B0%94-enum%EC%9D%98-10%EA%B0%80%EC%A7%80-%EC%98%88%EC%A0%9C/

반응형

'JAVA' 카테고리의 다른 글

[JAVA] HttpURLConnection / requestMethod, connectTimeout  (0) 2018.06.26
[JAVA] Static  (0) 2018.05.08
String StringBuffer 차이  (0) 2017.10.12
[JAVA] List, ArrayList  (0) 2017.09.22
JsonRequester  (0) 2017.07.05