문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:annotation [2012/01/20 17:53] kwon37xi |
java:annotation [2012/11/08 11:50] kwon37xi [Java Annotation] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java Annotation ====== | ====== Java Annotation ====== | ||
+ | * [[http:// | ||
+ | |||
+ | ===== Meta Annotation ===== | ||
+ | * [[http:// | ||
+ | |||
+ | ==== @Inherited ==== | ||
+ | <code java> | ||
+ | @Inherited | ||
+ | @interface ForEveryone { } | ||
+ | |||
+ | @interface JustForMe { } | ||
+ | |||
+ | @ForEveryone | ||
+ | @JustForMe | ||
+ | class Superclass { } | ||
+ | |||
+ | class Subclass extends Superclass { } | ||
+ | </ | ||
+ | 위와 같은 코드에서 '' | ||
===== Annotation 객체 생성하기 instanciation of annotation ===== | ===== Annotation 객체 생성하기 instanciation of annotation ===== | ||
+ | ==== 어노테이션은 인터페이스다! ==== | ||
+ | * 어노테이션은 기본적으로 인터페이스이다. | ||
+ | * 인터페이스는 implements 로 구현 클래스를 만든뒤에 객체를 생성해주면 된다. 그걸로 끝! | ||
+ | * <code java> | ||
+ | // 아래와 같은 어노테이션이 있을 때! | ||
+ | @Target(ElementType.PARAMETER) | ||
+ | @Retention(RetentionPolicy.RUNTIME) | ||
+ | @Documented | ||
+ | public @interface LoginUser { | ||
+ | boolean required() default true; | ||
+ | SomeValue [] someValues() default {}; | ||
+ | } | ||
+ | |||
+ | // 아래와 같이 클래스로 구현한 뒤에 해당 클래스의 인스턴스를 생성하면 된다. | ||
+ | public static class FakeLoginUser implements LoginUser { | ||
+ | |||
+ | private boolean requiredValue = true; | ||
+ | |||
+ | private SomeValue[] someValueValue = {}; | ||
+ | |||
+ | public FakeLoginUser(boolean requiredValue, | ||
+ | this.requiredValue = requiredValue; | ||
+ | this.someValueValue = someValueValue; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public Class<? extends Annotation> | ||
+ | return LoginUser.class; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public boolean required() { | ||
+ | return requiredValue; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public SomeValue[] someValue() { | ||
+ | return someValueValue; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 어노테이션을 직접 지정한 뒤에 Reflection으로 생성하기 - 복잡하므로 하지 말 것 ==== | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// |