제너릭(Generics)
- 클래스나 메서드를 다양한 타이으로 재사용할 수 있도록 하는 기능
- 주로 컴파일 시 타입을 지정해 안전한 코드를 작성할 수 있게 도움
- 타입 변환(Casting)을 줄일 수 있으며, 타입 안정성 강화 가능
- 제너릭 클래스
class Box<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();
}