본문 바로가기
IT/JAVA

JAVA - 애너테이션(Annotation)

by 삐약 개발자 2024. 12. 2.
반응형

애너테이션

 

@ 붙어있는거를 뜻함

정말 많이 사용함!!

주석과 같이 정보전달을 위한 목적으로 만들어진 문법 요소임

 

한개의 인터페이스에 한개의 추상메서드가 있다면 함수형 인터페이션 이라고 부름

@FunctionalInterface
package annotationEx;

@FunctionalInterface
public interface ExampleInterface {
    void example();
}

 

애너테이션 종류

- 표준 애너테이션 : 일반적인 애너테이

- 메타 애너테이션 : 다른 애너테이션을 정의할때 사용

 

즉, 애너테이션도 사용자가 직접 정의해서 사용할 수 있으며, 이러한 애너테이션을 사용자 정의 애너테이션이라고 함

 

표준 애너테이션

@Override - 메서드 앞에만 붙일 수 있는 애너테이션으로, 선언한 메서드가 상위 클래스의 메서드를 오버라이딩하거나 추상 메서드를 구현하는 메서드라는 것을 컴파일러에게 알려주는 역할

@Deprecated - 기존에 사용하던 기술이 다른 기술로 대체되어 시존 기술을 적용한 코드를 더

사용하지 않도록 유도하는 경우에 사용함 ()

즉, 기존의 코드를 다른 코드와의 호환성 문제로 삭제하기 곤란해 남겨두어야만 하지만 더 이상 사용하는 것을 권장하지 않을 때 @Deprecated 를 사용

@SuppressWarnings - 애너테이션은 컴파일 경고 메시지가 나타나지 않도록 합니다. 때에 따라서 경고가 발생할 것이 충분히 예상됨에도 묵인해야 할 때 주로 사용

@FunctionalInterface - 함수형 인터페이스를 선언할 때, 컴파일러가 함수형 인터페이스의 선언이 바르게 선언되었는지 확인하도록 합니다. 만약 바르게 선언되지 않은 경우, 에러를 발생시

 

 

메타 애너테이션 - 내가 쓸일은 거의없

메타 애너테이션(meta-annotation)은 애너테이션을 정의하는 데에 사용되는 애너테이션으로, 애너테이션의 적용 대상 및 유지 기간을 지정하는 데에 사용

 

예를 들어 표준 애너테이션중 @Override 가 어떻게 정의되있나보면

이렇게 되어 잇음

 

사용자 정의 애너테이션

@interface 애너테이션명 { // 인터페이스 앞에 @기호만 붙이면 애너테이션을 정의할 수 있습니다.
	타입 요소명(); // 애너테이션 요소를 선언
}

이런식으로 사용자가 직접 정의 해서 사용

 

 


lombok - 플러그인 깔아준뒤

 

1.

build.gradle

여기서 세팅

implementation 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'

이렇게 세팅후 코끼리 돌려준뒤

추가 된지 확인

 

그뒤에 아래처럼 활용가능

package com.choongang;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor //모든 전달 인자가 있는 생성자 생성
public class Member {
    private String name;
    private String password;
}
반응형

'IT > JAVA' 카테고리의 다른 글

JAVA - 스트림(Stream)  (0) 2024.12.02
JAVA - 람다(Lambda)  (0) 2024.12.02
JAVA - 컬렉션 프레임 워크  (0) 2024.12.02
JAVA - Collection 3) 예외처리  (1) 2024.11.29
JAVA - Collection 2) 제네릭  (0) 2024.11.29