| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 쿼리
- 프로그래머스
- 서버
- SQL
- 미니정리
- node.js
- 코드 테스트
- 자바스크립트
- oracle
- java
- 자바
- jsp
- 정리
- 스프링
- 스프링부트
- 프론트엔드
- 오라클
- jpa
- 백엔드
- Next.js
- spring
- 코드테스트
- MySQL
- web
- 알고리즘
- 프런트엔드
- 디자인 패턴
- 데이터베이스
- JavaScript
- BACK-END
- Today
- Total
참치코더의 꿈 메모장
표준 애너테이션(Annotation) - Java - 2021/08/30 본문
애너테이션(annotation)
프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이
바로 애너테이션이다.
애너테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 유용한
정보를 제공할 수 있다는 장점이 있다.
JDK에서 제공하는 표준 에너테이션은 주로 컴파일러를 위한 것으로 컴파일러에게 유용한
정보를 제공한다.
그리고 새로운 애너테이션을 정의할 때 사용하는 메타 에너테이션을 제공한다.
표준 애너테이션
@Override
메서드 앞에만 붙일 수 있는 애너테이션으로 조상의 메서드를 오버라이딩하는 것이라는
걸 컴파일러에게 알려주는 역할을 한다.
메서드 앞에 @Override라고 애너테이션을 붙이면, 컴파일러가 같은 이름의 메서드가
조상에 있는지 확인하고 없으면, 에러메시지를 출력한다.
@Deprecated
더 이상 사용되지 않는 필드나 메서드에 @Deprecated를 붙인다.
이 애너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을
권한다는 의미이다.
@FunctionalInterface
함수형 인터페이스를 선언할 때 이 애너테이션을 붙이면 컴파일러가 함수형 인터페이스를
올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킨다.
@SuppressWarning
컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해준다.
묵인해야하는 경고가 발생하는 대상에 반드시 @SuppressWarnings를 붙여서 컴파일 후에
어떤 경고 메시지도 나타나지 않게 해야한다.
* @SuppressWarning에서 주로 사용되는 것
1. deprecation : Deprecation가 붙은 대상을 사용해서 발생 하는 경고
2. unchecked : 지네릭스로 타입을 지정하지 않았을때 발생 하는 경고
3. rawtypes : 지네릭스를 사용하지 않아서 발생하는 경고
4. varargs : 가변인자의 타입이 지네릭 타입일 때 발생하는 경고를 억제할 때 사용
* 둘 이상의 경고를 억제하려면 @SuppresWarning({"deprecation", "unchecked", "varargs"})
@SafeVarargs
<컴파일 후에 제거되지 않는 타입 : reifiable 타입, 컴파일 후에 제거되는 파일 : non-reifiable 타입>
메서드에 선언된 가변인자의 타입이 non-reifiable타입일 경우, 해당 메서드를 선언하는 부분과
호출하는 부분에서 unchecked 경고가 발생한다.
해당 코드에 문제가 없다면 이 경고를 억제하기 위해 @SafeVarargs를 사용해야 한다.
이 애너테이션은 생성자와 static이나 final이 붙은 메서드에만 붙일 수 있다.
'JAVA' 카테고리의 다른 글
| Java - 바이트기반 스트림 2021/09/06 (0) | 2021.09.06 |
|---|---|
| 메타 애너테이션(Annotation) - Java - 2021/08/31 (0) | 2021.08.31 |
| 2021/08/27 Java - 열거형(enums) (0) | 2021.08.27 |
| 2021/08/26 Java - Generics(지네릭스) (0) | 2021.08.26 |
| 2021-08-25 Java - 호텔 방 예약 프로그램 CRUD 과제 (Map 사용) (0) | 2021.08.25 |