java8 : annotation
This commit is contained in:
29
java8to11/src/annotation/App.java
Normal file
29
java8to11/src/annotation/App.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package annotation;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Chicken("양념")
|
||||
@Chicken("후라이드")
|
||||
@Chicken("간장")
|
||||
public class App {
|
||||
|
||||
public static void main(@Pizza String[] args) throws @Pizza RuntimeException {
|
||||
List<@Pizza String> names = Arrays.asList("hello");
|
||||
Chicken[] chickens = App.class.getAnnotationsByType(Chicken.class);
|
||||
Arrays.stream(chickens).forEach(c -> System.out.println(c.value()));
|
||||
|
||||
System.out.println("========================================================");
|
||||
|
||||
ChickenContainer chickenContainer = App.class.getAnnotation(ChickenContainer.class);
|
||||
Arrays.stream(chickenContainer.value()).forEach(c -> System.out.println(c.value()));
|
||||
}
|
||||
|
||||
static class FeelsLikeChicken<@Pizza T> {
|
||||
|
||||
public static <@Pizza C> void print(@Pizza C c) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
11
java8to11/src/annotation/Chicken.java
Normal file
11
java8to11/src/annotation/Chicken.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
//@Target(ElementType.TYPE_PARAMETER) // type_parameter : 제네릭 타입에 @ 사용
|
||||
@Target(ElementType.TYPE_USE) // type_use : 타입을 사용하는 모든 곳에서 사용가능
|
||||
@Repeatable(ChickenContainer.class) // 어노테이션 중복 사용할 컨테이너 어노테이션 필요
|
||||
public @interface Chicken {
|
||||
String value();
|
||||
}
|
||||
13
java8to11/src/annotation/ChickenContainer.java
Normal file
13
java8to11/src/annotation/ChickenContainer.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
public @interface ChickenContainer {
|
||||
|
||||
Chicken[] value();
|
||||
}
|
||||
11
java8to11/src/annotation/Pizza.java
Normal file
11
java8to11/src/annotation/Pizza.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
public @interface Pizza {
|
||||
}
|
||||
Reference in New Issue
Block a user