🌱 오늘의 주제 : 애너테이션이란?
🌱 애너테이션이란?
- 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 애너테이션이다. 에너테이션은 주석(comment)처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점이 있다.
@Test // 메서드가 테스트 대상임을 테스트 프로그램에게 알린다.
public void method(). {
...
}
- @Test는 이 메서드를 테스트해야 한다는 것을 테스트 프로그램에게 알리는 역할을 할 뿐, 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다. 주석처럼 존재하지 않는 것이나 다름없다.
🌱 표준 에너테이션
🌱 @Override
- 조상의 메서드를 오버라이딩하는 것이라는 걸 컴파일러에게 알려주는 역할
- 오버라이딩할 때 메서드 앞에 @Override 붙이는 것은 필수는 아니지만, 알아내기 어려운 실수를 미연에 방지해주므로 반드시 붙이는 것이 좋다.
class Parent {
void parentMethod() {}
}
class Child extends Parent {
@Override
void parentmethod() {} // 조상 메서드의 이름으르 잘못 되었음을 알려줌.
}
🌱 @Deprecated
- 더 이상 사용되지 않는 필드나 메서드에 @Deprecated를 붙인다.
- 이 에너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을 권한다는 의미이다.
- 가능하면, @Deprecated가 붙은 것들은 사용하지 않아야 한다.
🌱 @FunctionalInterface
- 함수형 인터페이스를 선언할 때, 이 애너테이션을 붙이면 컴파일러가 함수형 인터페이스를 올바르게 선언했는지 확인하고 잘못된 경우 에러를 발생시킨다.
- 함수형 인터페이스는 추상 메서드가 하나뿐이어야 한다는 제약이 있다.
@FunctionalInterface
public interface Runnable {
public abstract void run(); // 추상 메서드
}
🌱 @SuppressWarnings
- 컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해준다.
- 억제하려는 경고 메시지를 에너테이션 뒤에 괄호() 안에 문자열로 지정하면 된다.
- @SuppressWarnings 로 억제할 수 있는 경고 메시지의 종류는 여러 가지가 있다.
- deprecation : @Deprecated가 붙은 대상을 사용해서 발생하는 경고
- unchecked: 지네릭스로 타입을 지정하지 않았을 때 발생하는 경고
- rawtypes: 지네릭스를 사용하지 않아서 발생하는 경고
- varargs: 가변인자의 타입이 지네릭 타입일 때 발생하는 경고를 억제할때 사용
@SuppressWarnings("unchecked") // 지네릭스와 관련된 경고를 억제
ArrayList list = new ArrayList(); // 지네릭 타입을 지정하지 않았음
list.add(obj); // 여기서 경고가 발생하지만 억제됨.
- 둘 이상의 경고를 동시에 억제하려면 베열에서처럼 괄호{}를 추가로 사용해야 한다.
@SuppressWarnings({"deprecation", "unchecked", "varargs"})
'Java' 카테고리의 다른 글
Java - 에너테이션의 조상, 규칙, 활용 (0) | 2023.03.16 |
---|---|
Java - 메타 애너테이션이란? (0) | 2023.03.14 |
Java - 열거형(enum) (0) | 2023.03.09 |
Java - 지네릭 메서드와 형변환 (2) | 2023.03.08 |
Java - 제한된 지네릭 클래스 & 와일드 카드 (0) | 2023.03.07 |