티스토리 뷰

Java

enum

Xion 2018. 9. 4. 17:03


enum은 열거형이라고 부른다 열거형은 서로 연관된 상수들의 집합니다.

즉, enum=서로 연관된 상수들의 집합.


enum Fruit{
    APPLE, PEACH, BANANA;
}
enum Company{
    GOOGLE, APPLE, ORACLE;
}
public class ConstantDemo {
   
    public static void main(String[] args) {
        /*
        if(Fruit.APPLE == Company.APPLE){
            System.out.println("과일 애플과 회사 애플이 같다.");
        }
        */
        Fruit type = Fruit.APPLE;
        switch(type){
            case APPLE:
                System.out.println(57+" kcal");
                break;
            case PEACH:
                System.out.println(34+" kcal");
                break;
            case BANANA:
                System.out.println(93+" kcal");
                break;
        }
    }
}


enum의 Fruit라는것도 클래스이다 .


스위치문의 case에서 사용하는 그냥 FRUIT.APPLE을 안적고 그냥 APPLE을 적어도 앞에 플룻을 적지않고 그 플룻의


 상수만 적어도 된다.


enum을 사용하는 이유를 정리하면 아래와 같다.


  • 코드가 단순해진다.
  • 인스턴스 생성과 상속을 방지한다.
  • 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다


enum과 생성자.


생성자 -> 클래스이름과 같은 메소드는 생성자이다.

enum Fruit{
    APPLE, PEACH, BANANA;
    Fruit(){
        System.out.println("Call Constructor "+this);
    }
}

이것과 같이 

enum에 생성자를 추가하면

APPLE,PEACH,BAnANA를 하나하나 만들때마다 호출될때마다 상수들의 값들이 세팅될대마다

 플루트가 인스턴스화 되면서 인스턴스를 만들려고 생성자가 호출되어 총 3회 호출된다.(문법적으로 숨어져

있음)

+this는 각각의 이름을 불러온다.


또한 필드값(변수값)을 가질수있다 메소드도 가질수 있다

Fruit(String color){
    System.out.println("Call Constructor "+this);
    this.color = color;
}


 생성자를 만들때마다 컬러라는 매개변수를 받아 this가 있는경우에는  전역변수이고.

this가없는 color는 매개변수를 가르키게된다 즉 지역변수이다.

지역변수>전역변수 

this 명시하지 않는경우에는 지역 명시한경우에는 전역이다.


위와같이 color라는 매개변수를 받는다. 


enum Fruit{
    APPLE("red"), PEACH("pink"), BANANA("yellow");
    public String color;
    Fruit(String color){
        System.out.println("Call Constructor "+this);
        this.color = color;
    }
}


APPLE 뒤에 (    ) 은 생성자를 호출하는것이고 괄호안의 인자는 생성자의 Fruit( String color)로 들어가고

들어가면 color; 여기로 들어간다. 또한 this.clor가 다시 public String color로 다시 들어가면서 레드가 된다.


열거형은 그것자체가 클래스이기떄문에 내부에 필드 생성자 메소드 있다. 단순히 상수가 아니라 더 많은

역할을 할 수 있다. 

     열거형은 값들을 저장하고 그값들이 변경되지않도록 한다.

'Java' 카테고리의 다른 글

접근제어자 & 사용이유  (0) 2019.09.12
참조 (reference)  (0) 2018.09.04
java clone  (0) 2018.09.04
java finalize , garbage collection  (0) 2018.08.29
자바 equals  (0) 2018.08.29