애너테이션
@ 붙어있는거를 뜻함
정말 많이 사용함!!
주석과 같이 정보전달을 위한 목적으로 만들어진 문법 요소임
한개의 인터페이스에 한개의 추상메서드가 있다면 함수형 인터페이션 이라고 부름
@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 |