码迷,mamicode.com
首页 > 编程语言 > 详细

Java自定义注解

时间:2018-12-20 00:02:22      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:child   catch   str   targe   sys   适用于   rgs   tst   运行时   

1. 自定义注解

//表示适用于方法或类
@Target({ElementType.METHOD,ElementType.TYPE})
//运行时注解
@Retention(RetentionPolicy.RUNTIME)
public @interface Description {
    String value();
    int age() default 18;
}

2. 使用注解

@Description(value = "i am class annotation",age=12)
public class Child {
//age采用default值
@Description(value = "i am method annotation")
public String name(){
return null;
}
public int age(){
return 0;
}
}

3. 测试


public class Main {
public static void main(String[] args){
//RetentionPolicy.CLASS或RetentionPolicy.SOURCE时无输出
try{
Class c = new Child().getClass();
boolean isExist = c.isAnnotationPresent(Description.class);
if(isExist){
Description d = (Description) c.getAnnotation(Description.class);
System.out.println(d.value());
System.out.println(d.age());
}
for(Method m : c.getMethods()){
for(Annotation a : m.getAnnotations()){
if(a instanceof Description){
Description d = (Description) a;
System.out.println((d.value()));
System.out.println((d.age()));
}
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}
i am class annotation
12
i am method annotation
18

 

Java自定义注解

标签:child   catch   str   targe   sys   适用于   rgs   tst   运行时   

原文地址:https://www.cnblogs.com/darange/p/10146933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!