2012-01-29 4 views
4

최근에 특수 효과에 대해 읽었으며 약간 혼란 스럽습니다. 주석 @NotNull을 사용했지만 변수가 null이 아닌지 확인하는 방법을 모르겠습니다. 코드에서 null에 대한 값을 확인하는 항목이 있는지 확인하십시오. 이는 인터페이스이기 때문에 이해할 수 있습니다. 실제 처리는 어디에서 발생하며 코드에서이 위치가 지정되지 않은 이유는 무엇입니까? 필자가 보았던 예는 보통 값을 취하는 주석을 작성하지만 다른 것은하지 않기 때문에 구현이 어디에서 발생하는지 혼란 스럽습니다.특수 효과 처리는 어디에서 발생합니까?

답변

5

주석은 단지 메타 데이터 일 뿐이며, 더 이상은 아닙니다. 클래스에 대한 세부 정보를 지정하려면 주석을 추가하십시오. 메타 데이터를 정의하는 기존의 잘 알려진 XML 방식의 대안으로 (어느 정도까지) 그것들을 생각하십시오.

이제 누군가가 XML을 읽고 메타 데이터로 무언가를 만드는 코드를 실행한다는 것이 명백합니다. 주석도 마찬가지입니다. 주석이 속한 프레임 워크는 주석을 읽고이 정보로 무엇인가를 만들어야합니다. @NotNull의 경우, hibernate-validator 프로젝트. 자바에 의해 노출 된 API는 반사에 의해 주석의 정보 (java.lang.Class, Method, Field 등과 같은 클래스)에 액세스 할 수있게 해줍니다. 그래서 어딘가에 Hibernate Validator 내부에는 클래스로 이동하는 코드가 있으며, 리플렉션으로 주석을 읽고 클래스가 이러한 주석을 준수하는지 확인합니다. 이러한 주석에는 일반적으로 보존 정책 '런타임'이 있습니다. 즉, 바이트 코드에 보존되고 이러한 주석을 전달하는 클래스와 함께로드됩니다.

Java 컴파일러에서 처리해야하는 주석이 있습니다. @Deprecated, @SuppressWarnings 등과 같이. 이러한 주석을 사용하면 편집 단계에서 몇 가지 코드 문제를 발견 할 수 있다는 이점이 있습니다.

주석 처리기를 넣고 컴파일 단계에서 '연결'할 수도 있지만 완전히 다른 이야기입니다.

희망 사항은 약간의 주석 사용법을 분명히합니다.

관련 문제