본문 바로가기

하../java

ch12 표준 어노테이션

@Override

- 오버라이딩을 올바르게 했는지 컴파이럴가 체크하게 된다.

- 오버라이딩할 때 메소드이름을 잘못적는 실수를 하는 경우가 많다.

class Parent {
	void parentMethod() { }
}

class Child extends Parent {
	@Override //를 적으면 컴파일러가 오류인지 알려줌
	void parentmethod() { } // 조상 메소드 이름을 잘못 적었음.
}

@Deprecated

- 앞으로 사용하지 않을 것을 권장하는 필드나 메소드에 붙인다.

-@Deprecated의 사용 예, Date클래스의 getDate()

@Deprecated//자바는 하위호완성을 위해 옛날걸 지우진 않고 사용 권장하지 않을때
public int getDate(){
 return normalize().getDayOfMonth();
}

@FunctionallInterface (컴파일러가 사용)

- 함수형 인터페이스에 붙이면 컴파일러가 올바르게 작성했는지 체크

  함수형 인터페이스에는 하나의 추상메소드만 가져야 한다는 제약이 있음

@FunctionalInterface
public interface Runnable{
 public abstract void run(); //추상 메소드 1개 
 추상 메소드가 0개거나 2개일떄 컴파일러가 잘못 작성했다고 알려줌
}

@SuppressWarnings (컴파일러가 사용)

- 컴파일러의 경고메세지가 나타나지 않게 억제한다.

- 괄호()안에 억제하고자하는 경고의 종류를 문자열로 지정

@SuppressWarnings("unchecked"); // 제네릭스와 관련된 경고를 억제
ArrayList list = new ArrayList(); // 제네릭 타입을 지정하지 않았음.
list.add(obj); //여기서 경고가 발생
경고를 내가 확인했다는 의미
두개 이상의 경고를 동시에 억제하려면
@SuppressWarnings({"deprecation", "unchecked", "varargs"})