✎NHN Academy | JAVA

NHN Academy - 2024.08.30(Fri)

박순돌 2024. 8. 30. 13:55

Module 13  Annotation

시작문제   →   이터레이터 구현하기

이터레이터 Iterator

  • 반복적으로 하나하나 꺼내어 처리 가능한 컬렉션이나 sequence 들
  • 이터레이터는 next()함수를 구현한 객체로, next()함수는 순환 가능한 객체의 다음 원소를 반환

@Override : 오류를 잡기위한 방법(상속해서 사용 시, 상속하는 클래스의 이름을 틀리게 작성하는 경우↑), 컴파일할 때 적용되어야 함

 

어노테이션 Annotation "주석"이라는 의미를 가지며, 자바에서는 @를 이용하여 주석처럼 달아 특수한 의미를 부여

                                        :   

소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소

                                        :   하나의 대상에 여러 개의 어노테이션 존재 O

 

AOP Aspect-Oriented-Programming

어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠서 그 관점을 기준으로 각각 모듈화 하겠다는 의미

:  하나의 코드를 여러가지 관점으로 디자인해서, 이를 관점에 맞춰서 지켜야 함

:  주요 개념

    * Aspect - 흩어진 관심사를 묶어서 모듈화 한 것, Java에서 어노테이션으로 구체화 O     + ) Advice와 Point cut

    * Target - Aspect가 가지고 있는 Advice가 적용되는 대상     +) 패키지, 클래스, 인터페이스, 메소드, 지역 변수, 타입 파라미터 in java

    * Advice - 어떤 일을 해야할 지에 대한 것으로, 해야 할 일에 대한 정보를 가짐

    * Join Point - Advice가 적용될 위치, 끼어들 수 있는 지점, 생성자 호출 직전, 필드에 접근하기 전등의 메소드 실행 시점 의미

    * Point cut - Join Point의 상세한 스펙을 정의, 어디에 적용해야 하는지에 대한 구체적인 정보를 가짐

 

선언부 Annotation

  • 패키지
  • 클래스와 인터페이스
  • 메소드
  • 지역 변수
  • 예외 발생 가능 명시
  • 타입 파라미터

구현부 Annotation

  • 생성자
  • 타입 변환
  • instanceof
  • 배열



표준 Annotation

  1. @Deprecate : 사용하지 않을 것 권장
  2. @Override : 오버라이드
  3. @SuppressWarnings : 특정 경고 X
  4. @SaftVarags : 잠재적 불완전 요소 보장
  5. @FuncationalInterface : 함수형

 

 

@Retention

: 일부 보존 정책과 함께 제공되는 메타 어노테이션

 : 보존 정책은 어노테이션이 유지되는 기간, 즉 삭제 시점을 결정     EX>보존 정책 = SOURCE, CLASS, RUNTIME 3개 중 1개 지정

 

@Override, @SuppressWarning

 : SOURCE 보존 정책

 : 이런 종류의 어노테이션은 컴파일러 차원에서 유효

 

@FunctionalInterface

 : 유지 정책이 RUNTIME으로, 실행시에도 사용

 

@Documented

 : Annotation 정보가 javadoc으로 생성한 문서에 포함되도록 함

 : 어노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함

 : @Documented 메타 어노테이션 - javadoc을 사용한 문서 생성시 생성된 문서에 정보가 포함

 

@Target

 : 해당 사용자 정의 Annotation이 적용될 수 있는 대상을 지정

 : 메소드, 생성자, 필드, 지역 변수 등 Annotation이 지정될 대상 지정

 : 적용 대상은 ElementType에 정의됨

 : 하나 이상의 대상을 지정 가능

 

@Inherited

 : Annotation이 서브 클래스에 상속되도록 함

 : @Inherited Annotation이 적용된 클래스의 서브 클래스는 Annotation을 명시하지 않아도 적용된 것과 같이 인식됨

 : 클래스 정의에서만 사용됨

 

@Repeatable

 : 반복되는 Annotation이 필요할 경우 사용

 : 반복되는 Annotation을 위한 컨테이너 Annotation

 

***Annotation의 성능과 사용방법은 알고 있기***

at the singleton / at the CreationMode(type = "Java")

public class prodjct


'✎NHN Academy | JAVA' 카테고리의 다른 글

NHN Academy - 2024.09.03(Tue)  (0) 2024.09.03
NHN Academy - 2024.09.02(Mon)  (0) 2024.09.02
NHN Academy - 2024.08.29(Thu)  (0) 2024.08.29
NHN Academy - 2024.08.28(Wed)  (1) 2024.08.28
NHN Academy - 2024.08.27(Tue)  (0) 2024.08.27