학습 내용
- 애노테이션 정의 방법
- 표준 애노테이션
- 메타 애노테이션
애노테이션 정의 방법
interface 앞에 @를 붙여 주면 애노테이션을 정의 할 수 있습니다.
하지만 지금 생성한 애노테이션은 아무런 정보가 없는 빈 껍데기 일 뿐 입니다.
여기서 정보를 더 추가 해봅시다,
디폴트 값으로 애노테이션 안에 값을 지정을 할 수도 있고 애노테이션을 사용하고 그 값을 정의 할 수도 있습니다.
표준 애노테이션
@Override
-> 부모에게 상속 받은 기능들을 사용 할 때 사용하는 애노테이션입니다. 메서드 이름이 부모의 메서드 이름과 달라지면 컴파일 시 에러가 발생됩니다.
@Deprecated
-> 필드의 멤버나 메서드 중에 우리가 사용하지 않는 것들을 삭제하지 않고 이 애노테이션을 사용하여 더 이상 사용하지 않을 것을 권한다 라는 의미를 부여해주는 기능입니다.
사용하고 멤버나 메서드를 사용하면 컴파일 시 경고가 발생됩니다.
@FunctionalInterface
-> 함수형 인터페이스가 올바르게 선언이 됐는지 검사해주는 기능입니다. 잘못 된 경우 컴파일 에러가 발생됩니다.
@SuppressWarnings
-> 컴파일 시 발생 되는 에러를 묵인 시켜줍니다. 즉, 컴파일 에러를 감춰줍니다.
메타 애노테이션
@Target
-> 애노테이션을 어디에 붙일지?? 지정하는 기능입니다.
@Retention
-> 애노테이션이 유지되는 기간을 지정하는 기능입니다.
유지 정책
- SOURCE : 소스 파일에만 존재하고 클래스 파일에는 존재하지 않는다.
- CLASS : 클래스 파일에 존재한다.
- RUNTIME : 클래스 파일에 존재하고 런타임 실행 할 까지 존재한다.
@Documented
-> javaoc으로 작성한 문서에 포함 되도록 하는 기능입니다.
@Repeatable
-> 애노테이션을 여러번 붙일 수 있게 해주는 기능입니다.
메타 에노테이션을 잘 기억해 둡시다.
Spring 에 자주 나오는 애노테이션 입니다. 기억 해두는 것을 추천합니다.
'Laguage' 카테고리의 다른 글
[Java] ArchUnit 아키텍처 테스트에 대해 알아보자 (0) | 2022.06.18 |
---|---|
[JAVA] JVM 구조 (0) | 2022.02.11 |
[JAVA] 스레드 ( Thread ) (1) | 2022.02.08 |
[JAVA] Optional (0) | 2022.01.20 |
[JAVA] 열거형 ( enums ) (0) | 2021.12.28 |
[java] 객체지향 프로그래밍 설계 원칙 - SOLID (0) | 2021.12.10 |
[java] 객체지향 프로그래밍 설계 원칙 - 결합도 / 응집도 (0) | 2021.12.09 |
Java DTO 관련 정리... (0) | 2021.11.21 |