24.09.24(제너릭, 어노테이션)

은구야노올자·2024년 9월 24일

🤯지식주머니🤯

목록 보기
20/98
post-thumbnail

제너릭(Generics)

  • 클래스나 메서드를 다양한 타이으로 재사용할 수 있도록 하는 기능
  • 주로 컴파일 시 타입을 지정해 안전한 코드를 작성할 수 있게 도움
  • 타입 변환(Casting)을 줄일 수 있으며, 타입 안정성 강화 가능
  • 제너릭 클래스
class Box<T> { // T는 타입 파라미터로, 실제 사용할 때 타입을 지정할 수 있다.
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

Box<String> stringBox = new Box<>();
stringBox.setItem("Hello");
String item = stringBox.getItem();  // 타입 캐스팅 없이 안전하게 사용 가능
  • 제너릭 메서드
    • 제너릭 메서드는 메서드에 타입 파라미터를 선언하여 사용할 수 있다.
public <T> T printAndReturn(T item) {
    System.out.println(item);
    return item;
}

String result = printAndReturn("Hello");
Integer number = printAndReturn(123);

어노테이션(Annotation)

  • 메타데이터를 코드에 추가하는 방식
  • 어노테이션 자체가 프로그램에 직접적인 영향을 주지는 않지만, 컴파일러에게 특정 정보를 전달하거나 런타임에 사용
  • 코드의 의미를 명확히 하거나, 자동화도구 및 프레임워크에서 특정 동작을 트리거하는데 사용
  • @Override
    • 메서드가 부모 클래스에서 상속받은 메서드를 오버라이드(재정의)한다는 것 명시
    • 컴파일러가 해당 메서드가 제대로 오버라이드되었는지 확인할 수 있도록 도움
class Parent {
    public void show() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    @Override
    public void show() {
        System.out.println("Child");
    }
}
  • @Deprecated
    • 해당 메서드나 클래스가 더 이상 사용되지 않음을 나타냄
    • 컴파일 시 경고를 발생시키며, 이후 버전에서 제거될 가능성이 있음을 알림
@Deprecated
public void oldMethod() {
    // 더 이상 사용하지 않는 메서드
}
  • @SuppressWarnings
    • 컴파일러가 특정 경고를 무시하도록 함
    • unchecked, deprecation 등의 경고 무시 가능
@SuppressWarnings("unchecked")
public void method() {
    List list = new ArrayList();  // 경고 무시
}

0개의 댓글