자바 주해 지식 포 인 트 를 상세히 해석 하 다.
자바 주 해 는 자바 코드 에 메타 데 이 터 를 제공 하 는 데 사 용 됩 니 다.이 말 을 보고 나 면 아직도 어리둥절 할 수도 있 습 니 다.사람의 말 로 는 주석 이 코드 실행 에 직접적인 영향 을 주지 않 고 정보 만 제공 하 는 것 입 니 다.이어서 저 는 주해 의 정의,원 주해,주해 속성,사용자 정의 주해,주해 해석 JDK 가 제공 하 는 주해 등 몇 가지 측면 에서 주해(Annotation)를 다시 알 아 보 겠 습 니 다.
2.jdk 가 지원 하 는 주 해 는 어떤 것 이 있 습 니까?
2.1 세 가지 자주 사용 하 는 주해:
@Suppress Warnings 이 주 해 는 컴 파일 러 가 경고 메 시 지 를 보 내 는 것 을 막 는 역할 을 합 니 다.다음 인자 가 있 을 수 있 습 니 다.
deprecation : 。
unchecked: 。
allthrough: Switch Break 。
path: 、 。
serial: serialVersionUID 。
finally: finally 。
all:
@Deprecated 이 주해 의 역할 은 유행 이 지난 클래스 나 방법 을 표시 하 는 것 이다.@Override 이 주 해 는 방법 앞 에 사용 되 며,이 방법 은 부모 클래스 를 다시 쓰 는 방법 임 을 표시 합 니 다.
2.2 원 주해
원 주 해 는 주로 사용자 정의 주 해 를 주석 하 는 데 사용 되 는데 각각@Retention,@Target,@Document,@Inherited 와@Repeatable(JDK 1.8 가입)다섯 가지 가 있 습 니 다.
다음은 평소에 가장 자주 사용 하 는 두 가지 주 해 를 말씀 드 리 겠 습 니 다.
@Retention 주해 의 생명주기,주로
RetentionPolicy.SOURCE
RetentionPolicy.CLASS , class ,
RetentionPolicy.RUNTIME , 。
@Target 주해 의 역할 목표,주로
ElementType.TYPE 、 、 、
ElementType.FIELD 、
ElementType.METHOD
ElementType.PARAMETER
ElementType.CONSTRUCTOR
ElementType.LOCAL_VARIABLE
ElementType.ANNOTATION_TYPE (@Retention )
ElementType.PACKAGE
ElementType.TYPE_PARAMETER , 、 、 (jdk1.8 )
3.주해 실례매 거 진 에서 컴 파 일 러 는 매 거 진 이름 만 제한 하고 중복 할 수 없습니다.개발 과정 에서 매 거 진 Id 중복 문제 가 자주 발생 합 니 다.모든 사람 이 기능 을 개발 할 때 자신의 기능 에 만 집중 하고 코드 를 직접 제출 하기 때문에 매 거 진 Id 충돌 에 주의 하지 않 습 니 다.이 럴 때 아래 코드 를 사용 하여 매 거 진 자체 검 사 를 할 수 있 습 니 다.프로젝트 의 개발 단계 에서 코드 의 문 제 를 제때에 발견 할 수 있다.아래 코드 를 조금 만 수정 하면 항목 에서 사용 할 수 있 습 니 다.가 져 가 고 쓰 지 않 습 니 다.
1.사용자 정의 주석
열 거 된 key 가 중복 되 었 는 지 확인 합 니 다.
package org.pdool.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CheckEnum {
}
2.대응 하 는 방법 에 주 해 를 추가
package org.pdool.anno;
/**
*
* @author
*/
public enum ResType {
GOLD(1),
DIAMOND(2),
// :
SILVER(2);
int type;
@CheckEnum
public int getType() {
return type;
}
ResType(int type) {
this.type = type;
}
}
3.프로젝트 가 시 작 될 때 주해 의 매 거 진 을 검사 합 니 다.
package org.pdool.anno;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
/**
* @author
*/
public class Aain {
public static void main(String[] args) throws InvocationTargetException,IllegalAccessException {
//
Method[] declaredMethods = ResType.class.getDeclaredMethods();
Method annoMethod = null;
for (Method declaredMethod : declaredMethods) {
CheckEnum annotation = declaredMethod.getAnnotation(CheckEnum.class);
if (annotation != null){
annoMethod = declaredMethod;
break;
}
}
Set<Object> set = new HashSet<>();
// id
Object[] oo = ResType.class.getEnumConstants();
for (Object o : oo) {
Object invoke = annoMethod.invoke(o);
if (!set.contains(invoke)){
set.add(invoke);
}else {
System.out.println(" key "+ o +" -- "+ invoke);
}
}
}
}
주:위의 코드 는 간단 한 인 스 턴 스 일 뿐 핵심 코드 를 보 여주 기 위해 서 입 니 다.프로젝트 에서 사용 할 때 클래스 를 수정 하여 스 캔 항목 의 가방 을 가 져 올 수 있 습 니 다.모든 열 거 를 옮 겨 다 니 면 프로젝트 에서 사용 할 수 있 습 니 다.
총화
주 해 는 코드 의 운행 에 영향 을 주지 않 지만 실행 중인 프로그램 에 더 많은 정 보 를 제공 할 수 있 습 니 다.주해 도 많은 프레임 워 크 의 기본 기술 착안점 입 니 다.예 를 들 어 Spring 의 주해,Lombok 의 각종 주 해 는 주 해 를 사용 하여 많은 일 을 했 습 니 다.주해 가 어떻게 된 일 인지 알 게 되 었 고 프레임 워 크 를 이해 하 는 것 도 쉬 울 것 입 니 다.
자바 주해 지식 을 자세히 설명 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 주해 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.