@Chicken
@Retention(RetentionPolicy.RUNTIME) // 이 애노테이션 정보를 언제까지 유지할 것인가 @Target(ElementType.TYPE_PARAMETER) // 이 애노테이션을 사용할 곳 public @interface Chicken { }
public static void main(String[] args) { } static class FeelsLikeChicken<@Chicken T> { // <C> 는 타입 파라미터 // print 메소드의 C는 타입 public static <@Chicken C> void print(C c){ } }
@Retention(RetentionPolicy.RUNTIME) // 이 애노테이션 정보를 언제까지 유지할 것인가 @Target(ElementType.TYPE_USE) // 이 애노테이션을 사용할 곳 public @interface Chicken { }
public static void main(@Chicken String[] args) throws @Chicken RuntimeException { List<@Chicken String> names = Arrays.asList("hyunjun"); } static class FeelsLikeChicken<@Chicken T> { // <C> 는 타입 파라미터 // print 메소드의 C는 타입 public static <@Chicken C> void print(@Chicken C c){ } }
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE_USE) @Repeatable(ChickenContainer.class) public @interface Chicken { String value(); }
ChickenContainer
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE_USE) public @interface ChickenContainer { Chicken[] value(); }
@Chicken("양념") @Chicken("마늘") @Chicken("간장") @Chicken("후라이드") public class AppForJava8Annotation { public static void main(String[] args) { Chicken[] chickens = App.class.getAnnotationsByType(Chicken.class); Arrays.stream(chickens).forEach( c ->{ System.out.println(c.value()); }); ChickenContainer chickenContainer = App.class.getAnnotation(ChickenContainer.class); Arrays.stream(chickenContainer.value()).forEach(c -> { System.out.println(c.value()); }); } }
[spring] 스프링 어노테이션 및 메소드 정리
Java Annotation Detail @interface - 어노테이션 클래스에 선언 - 이 파일을 어노테이션 클래스로 선언 - 해당 클래스명을 가진 어노테이션이 생성되었다고 보면 됨! 1 2 3 4 @Target(ElementType.PARAMETER) @Re..
kkambi.tistory.com
더 자바, Java 8 - 인프런
자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이
www.inflearn.com
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.
[JAVA8] 어노테이션의 변화
두가지 큰 변화
타입 선언 부
타입에 사용할 수 있으려면
@Chicken
@Retention(RetentionPolicy.RUNTIME) // 이 애노테이션 정보를 언제까지 유지할 것인가 @Target(ElementType.TYPE_PARAMETER) // 이 애노테이션을 사용할 곳 public @interface Chicken { }
public static void main(String[] args) { } static class FeelsLikeChicken<@Chicken T> { // <C> 는 타입 파라미터 // print 메소드의 C는 타입 public static <@Chicken C> void print(C c){ } }
@Chicken
@Retention(RetentionPolicy.RUNTIME) // 이 애노테이션 정보를 언제까지 유지할 것인가 @Target(ElementType.TYPE_USE) // 이 애노테이션을 사용할 곳 public @interface Chicken { }
public static void main(@Chicken String[] args) throws @Chicken RuntimeException { List<@Chicken String> names = Arrays.asList("hyunjun"); } static class FeelsLikeChicken<@Chicken T> { // <C> 는 타입 파라미터 // print 메소드의 C는 타입 public static <@Chicken C> void print(@Chicken C c){ } }
중복 사용할 수 있는 어노테이션 만들기
@Chicken
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE_USE) @Repeatable(ChickenContainer.class) public @interface Chicken { String value(); }
ChickenContainer
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE_USE) public @interface ChickenContainer { Chicken[] value(); }
@Chicken("양념") @Chicken("마늘") @Chicken("간장") @Chicken("후라이드") public class AppForJava8Annotation { public static void main(String[] args) { Chicken[] chickens = App.class.getAnnotationsByType(Chicken.class); Arrays.stream(chickens).forEach( c ->{ System.out.println(c.value()); }); ChickenContainer chickenContainer = App.class.getAnnotation(ChickenContainer.class); Arrays.stream(chickenContainer.value()).forEach(c -> { System.out.println(c.value()); }); } }
[spring] 스프링 어노테이션 및 메소드 정리
Java Annotation Detail @interface - 어노테이션 클래스에 선언 - 이 파일을 어노테이션 클래스로 선언 - 해당 클래스명을 가진 어노테이션이 생성되었다고 보면 됨! 1 2 3 4 @Target(ElementType.PARAMETER) @Re..
kkambi.tistory.com
더 자바, Java 8 - 인프런
자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이
www.inflearn.com
'기록 > JAVA' 카테고리의 다른 글