일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 외부키
- 메세지수정
- ubuntu
- 서브쿼리
- subquery
- appspec
- 예약
- 적용우선순위
- appspec.yml
- querydsl
- Query
- 검색
- application.yml
- 포트
- AuthenticationEntryPoint
- 메소드명
- 커밋메세지수정
- docker명령어
- foreignkey
- MySQL
- 테스트메소드
- 네이티브쿼리
- 2 > /dev/null
- WeNews
- 테스트
- EC2
- ㅔㄴ션
- 참조키
- 컨테이너실행
- 추후정리
Archives
- Today
- Total
제뉴어리의 모든것
[Section1][Java] 심화 - 애너테이션 본문
애너테이션이란?
애너테이션의 우리말 번역은 주석이다.
그러나 우리는 기존에 주석을 사용하고 있었다.
//, /** **/ 와 같이 코드를 주석처리 하였다.
그러나 이러한 주석은 코드를 작동하지 않게 막거나,
코드를 설명하기 위해 사용하였다.
그러나 애너테이션은 같은 주석이지만, 전달하려는 대상이 다르다.
기존 주석은 개발자에게 전달하기 위한 정보를 나타내는 주석이였다면,
애너테이션은 프로그램에게 내용을 전달하기 위한 주석이다.
애너테이션 용도
- 컴파일러에게 문법 에러를 체크하기 위한 용도
- 프로그램 빌드할때 코드를 자동으로 생성할 수 있도록 해주기 위한 용도
- 런타임시에 특정 기능을 실행하도록 정보 제공
애너테이션 사용 예
- @Test
@Test // 아래 메서드가 테스트 대상임을 테스트 프로그램에게 알리는 애너테이션
public void run() {...생략...}
public void stop() {...생략...}
@Test 애너테이션은 JUnit이라는 테스트 프로그램에게 해당 코드가 테스트 코드임을 알려서,
JUnit이 작동될때 해당 코드만(run()메소드만) 테스트를 진행한다.
- @FunctionalInterface
@FunctionalInterface //함수형 인터페이스임을 지정
interface functionInterface1 {
void print();
}
@FunctionalInterface //함수형 인터페이스임을 지정하였지만, 규칙에 맞지 않으므로 컴파일러가 에러 생성
interface functionInterface2 {
void print();
void print2();
}
애너테이션 종류
- 표준 애너테이션
자바에서 기본적으로 제공하는 애너테이션
표준 애너테이션설명
@Override | 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림 |
@Deprecated | 앞으로 사용하지 않을 대상을 알릴 때 사용 |
@FunctionalInterface | 함수형 인터페이스라는 것을 알 |
@SuppressWarning | 컴파일러가 경고메세지를 나타내지 않음 |
- 메타 애너테이션
애너테이션을 위한 애너테이션으로, 애너테이션에 붙이는 애너테이션이다.
메타 애너테이션설명
@Target | 애너테이션을 정의할 때 적용 대상을 지정하는데 사용한다. |
@Documented | 애너테이션 정보를 javadoc으로 작성된 문서에 포함시킨다. |
@Inherited | 애너테이션이 하위 클래스에 상속되도록 한다. |
@Retention | 애너테이션이 유지되는 기간을 정하는데 사용한다. |
@Repeatable | 애너테이션을 반복해서 적용할 수 있게 한다. |
- 사용자 정의 애너테이션: 사용자가 직접 정의하는 애너테이션
'코드스테이츠 > 정리 블로깅' 카테고리의 다른 글
[Section2][자료구조/알고리즘] 자료구조 - Stack, Queue (0) | 2022.07.25 |
---|---|
[Section1] [Java] 심화(Effective) - JVM (0) | 2022.07.24 |
[Section2] [자료구조-알고리즘] - 재귀 (0) | 2022.07.21 |
[Section1][Java] 심화 - 람다 (0) | 2022.07.20 |
[Section1][Java] 심화 - 스레드 (0) | 2022.07.20 |