본문 바로가기
프로그래밍/Java

Java - 열거형과 가변인자, 어노테이션

by 왕거 2020. 10. 14.

25강의 내용은 좀 쉬어가는 느낌을 받을 수 있었다.

 

 

열거형(Enum)

  • Java 구 버전에서 상수로 사용하던 방법을 대체하는 방법
  • 상수처럼 보이지만 상수가 아님
  • enum 타입 참조변수를 사용해서 사용한다.
enum Numbers_TEST {
    ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN
}

public static void main(String[] args) {
    Numbers_TEST num = Numbers_TEST.ONE;
    System.out.println(num);
    
    switch(num) {
    	case ONE:
            System.out.println("일");
        case TWO:
            System.out.println("이");
        case THREE:
            System.out.println("삼");
        case FOUR:
            System.out.println("사");
        case FIVE:
            System.out.println("오");
        case SIX:
            System.out.println("육");
        case SEVEN:
            System.out.println("칠");
        default:
            System.out.println("팔 구 십");
    }
}

  • 클래스 내부에서 열거형 정의가 가능하다.
  • 열거형 정의부에 생성자를 지정할 수 있다.
enum City {
    OSAN(20), SEOUL(100), BUSAN(90);
    
    int age;
    private City(int age) {
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "City number is " + age;
    }
}

class EnumParamConstructor {
    public static void main(String[] args) {
        System.out.println(City.OSAN);
        System.out.println(City.SEOUL);
    }
}

 

매개변수의 가변인자 선언

  • <자료형> + ... + <이름> 의 구성을 가진다.
  • 불특정한 수의 인자를 다룰때 사용하면 좋다.
  • 보통 enhanced for 문을 사용해서 다룬다.
class Vargs {
    public static void showAll(String...vargs) {
        System.out.println("LEN : " + vargs.length);
    	
        for(String S : vargs) {
            System.out.println(s + "\t");
        System.out.println();
    }
    
    public static void main(String[] args) {
        showAll("One");
        showAll("One", "Two");
        showAll("One", "Two", "Three");
    }
}

 

어노테이션

  • 자바 컴파일러에 메세지(메타 데이터)를 전달하는 것
  • @ 키워드를 사용해서 메소드 또는 클래스 위에 지정한다.
  • 2개 이상의 어노테이션을 조합해서 사용할 수도 있다.
  • 기본적으로 제공되는 어노테이션은 @Overrride, @Deprecated, @SuppressWarnings등이 있다.
  • 사용자가 직접 만들어서 쓸 수 있는 Custom Annotation도 있다.

 

어노테이션의 경우에는 스프링 부트 진행하면서 많이 궁금했던 내용이었는데, 아무래도 입문자를 위한 개념강의이다보니 Custom Annotation에 대해서는 설명을 생략한것 같다.

Annotation에 대한 추가적인 공부가 필요하다.

'프로그래밍 > Java' 카테고리의 다른 글

Java - 네스티드(Nested) 클래스  (0) 2020.10.15
Java - Collection (2)  (0) 2020.10.09
Java - Collections (1)  (0) 2020.10.09
Java - 제네릭 (2)  (0) 2020.09.27
Java - 제네릭 (1)  (0) 2020.09.22