인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_PARAMETER) // ElementType.TYPE_PARAMETER 사용 시
public @interface Pasta {
}
public class LikePasta<@Pasta T> { // 이 부분에 사용이 가능하다.
public static <@Pasta C> void print(C c) { // 이 부분에 사용이 가능하다.
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface Pasta {
}
@Pasta
public class App {
public static void main(@Pasta String[] args) throws @Pasta Exception{
List<@Pasta String> names = Arrays.asList("jay");
}
static class LikePasta<@Pasta T> {
public static <@Pasta C> void print(@Pasta C c) {
}
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
@Repeatable(PastaContainer.class)
public @interface Pasta {
String value();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface PastaContainer {
Pasta[] value();
}
@Pasta("a")
@Pasta("b")
@Pasta("c")
public class App {
public static void main(String[] args){
Arrays.stream(App.class.getAnnotationsByType(Pasta.class)).forEach(s -> System.out.println(s.value()));
}
}
// 출력값
a
b
c