본문 바로가기

Language/Java

Java enum

 java enum

o  클래스처럼 보이게 하는 상수

¡  예를 들어 Config 라는 클래스를 만들고 맴버로 KVM,XenServer를 두고 싶음

-       기존의 클래스로 구현하는 방식 (Config.java)

public class Config {

        public static final int KVM = 1;

        public static final int XenServer = 2;

}

-       위와 같이 클래스로 구현한다.
-       여기에서의 문제점은 1,2 값이 KVM, XenServer 만을 가르키지 않는다
-       또한 3,4 와 같은 숫자가 들어 올 수도 있다

 

¡  이러한 문제점을 해결하기 위해서 JAVA 1.5 에서 enum 이 추가 되었다.

public enum Config {

KVM,XenServer

}

 

¡  출력

public class HelloWorld {

    public static void printHypervisor (Config c){

        System.out.println(c);

    }

    public static void main(String[] args) {

        printHypervisor(Config.KVM);

    }

}

 

o  enum의 확장(함수처럼 보이게)

¡  함수처럼 () 안에 인자를 넣어서 enum 리스트를 만듦(Config.java)

-       실제적으로 Config 가 생성될 때 cfg_string 에 parameter를 넣는다
-       함수를 정의할 수 있음: get_cfg()

 

public enum Config {

        OS("Linux, Windows"),

        HypervisorList("KVM Type,XenServer Type");

       

        private String cfg_string;

        Config(String arg) {  

               this.cfg_string = arg;

        }

        String get_cfg() {

               return cfg_string;

        }

}

¡  사용하는 방법 (HelloWorld.java)

public class HelloWorld {

    public static void main(String[] args) {

        System.out.println(Config.HypervisorList.get_cfg());

         System.out.println(Config.OS.get_cfg());

    }

}

-       결과

KVM Type,XenServer Type

Linux, Windows