본문 바로가기
Programming/Java

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

by Tarake 2024. 8. 11.

열거형


public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public class Main {
    public static void main(String[] args) {
        Day today = Day.MONDAY;
        
        if (today == Day.MONDAY) {
            System.out.println("Today is Monday.");
        }
    }
}

열거형이 등장하기 이전에는 자바는 열거형을 표현하기 위해서 상수에 이름을 붙여 사용하였습니다. 하지만 이러한 방식에는 예를 들어 남성은 1이고 고양이도 1이라는 상수로 만들었는데 switch문에서는 똑같이 case 1: 이 실행되는 문제점이 있습니다. 그래서 자바 5 이후 등장한 것이 열거형입니다.

자바에서 열거형(Enum)은 관련된 상수들을 그룹으로 묶어 관리할 수 있는 특별한 데이터 타입입니다.

 

열거형의 메소드

  • values() : 열거형에 정의된 모든 상수를 배열로 반환합니다.
  • valueOf(String name) : 주어진 문자열과 일치하는 열거형 상수를 반환합니다.
  • name() : 열거형 상수의 이름을 문자열로 반환합니다.
  • ordinal() : 열거형 상수가 정의된 순서(인덱스)를 반환합니다.

 

가변인자


public class vararg {
    // 가변인자를 사용하는 메소드
    public static void printNumbers(int... numbers) {
        for (int number : numbers) {
            System.out.println(number);
        }
    }

    public static void main(String[] args) {
        // 가변인자에 여러 개의 인자 전달
        printNumbers(1, 2, 3, 4, 5);

        // 가변인자에 배열을 전달
        int[] nums = {10, 20, 30};
        printNumbers(nums);
    }
}

자바의 가변인자(varargs)는 메소드에 전달되는 인자의 개수가 가변적일 때 사용하는 기능입니다.

메소드에 여러 개의 인자를 간편하게 전달할 수 있으며, 특히 인자의 개수를 알 수 없거나 동적으로 처리해야 할 때 유용합니다.

 

가변인자의 특징

  • 배열로 처리됨: 가변인자로 전달된 값들은 메소드 내에서 배열처럼 처리됩니다.
  • 마지막에만 위치할 수 있음: 메소드의 매개변수 리스트에서 가변인자는 마지막에만 위치할 수 있습니다. 여러 개의 가변인자를 사용할 수 없습니다.
  • 다양한 타입 사용 가능: 가변인자는 기본 타입과 객체 타입 모두 사용할 수 있습니다.
  • 메소드 오버로딩: 가변인자를 사용하는 메소드는 오버로딩에 영향을 줄 수 있습니다.
  • 가변인자와 배열 결합: 가변인자와 배열을 조합하여 사용할 수 있습니다.

 

어노테이션


class Car {
    @Override
    public String toString() {
        return "내용";
    }
}

자바에서 어노테이션 타입은 특정 목적이나 용도로 사용되는 특별한 어노테이션을 제공합니다. 

 

@Override

  • 용도 : 메소드가 부모 클래스의 메소드를 오버라이드(재정의)하고 있음을 명시합니다.
  • 컴파일 타임 체크 : 메소드가 실제로 부모 클래스의 메소드를 오버라이드하고 있는지 컴파일 타임에 확인합니다. 오타나 잘못된 메소드 시그니처로 인해 오버라이딩이 제대로 되지 않았을 경우 컴파일 오류를 발생시킵니다.
  • 문서화: 코드의 명확성을 높여, 개발자가 메소드가 오버라이드된 것임을 쉽게 인식할 수 있도록 합니다.

@Deprecated

  • 용도: 해당 요소(클래스, 메소드, 필드 등)가 호환성 유지를 위해 존재하지만 이후에 더 이상 사용되지 않거나, 사용하지 말아야 함을 나타냅니다.
  • 컴파일 타임 경고: 이 어노테이션이 붙은 요소를 사용할 때 컴파일러는 경고를 발생시킵니다.
  • 문서화: 이 어노테이션을 사용하여 코드에서 사용하지 말아야 할 부분을 명확히 하고, 개발자에게 대체 방법이나 새로운 사용법을 알릴 수 있습니다.

@SuppressWarnings

  • 용도: 위에 @Deprecated와 달리 컴파일러 경고를 억제합니다.
  • 특정 경고 억제: 코드에서 발생하는 특정 경고 메시지를 억제할 수 있습니다.

 

 

출처

W3school

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

'Programming > Java' 카테고리의 다른 글

람다  (0) 2024.08.11
중첩 클래스  (0) 2024.08.11
컬렉션 프레임워크  (0) 2024.08.10
제네릭  (0) 2024.08.10
Arrays 클래스  (0) 2024.08.09