JDK8-重复注解与类型注解(十一)
原创
©著作权归作者所有:来自51CTO博客作者会写代码的美丽学姐的原创作品,请联系作者获取转载授权,否则将追究法律责任
package cn.wcj.jdk8.lambda.test;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Repeatable(MyAnnos.class)
@Target({TYPE, FIELD, METHOD,CONSTRUCTOR, LOCAL_VARIABLE,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
String value() ;
}
package cn.wcj.jdk8.lambda.test;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnos {
MyAnno[] value() ;
}
package cn.wcj.jdk8.lambda.test;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.junit.Test;
/**
*
* <p>Title:AnnoTest </p>
* <p>Description:JDK8-重复注解与类型注解 </p>
* <p>Company:Software College </p>
* @author SuccessKey(WangCJ)
* @date 2017年6月21日 下午2:49:19
*/
public class AnnoTest {
//使用类型注解可以解决检查约束的工作
private /*@NonNull*/ Object obj ;
@Test
public void test1() throws Exception{
Class<AnnoTest> clazz=AnnoTest.class ;
Method method = clazz.getMethod("doXXX");
MyAnno[] myAnnos = method.getAnnotationsByType(MyAnno.class);
Arrays.stream(myAnnos)
.map(MyAnno::value)
.forEach(System.out::println);
}
@MyAnno("Washing")
@MyAnno("GoToBed")
public void doXXX() {
}
}