通过JAVA反射取Annotation

Annotation属性值大致有以下三种: 基本类型 数组类型 枚举类型

import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
/**
* 通过JAVA反射取Annotation
* 只有执行时才会加载到Jvm中,才可以取得Annotation信息
* @author Administrator
*
*/
@Retention(value=RetentionPolicy.RUNTIME)
@interface Myannotation05{
public String name() default "name";
public String sex() default "男";
public int age() default 20;
}
class Simple{
public void printInfo(){
System.out.println("***");
}
}
class SimpleBean extends Simple{
@SuppressWarnings("Unchecked")
@Deprecated
@Override
@Myannotation05(name="张三",sex="男",age=25)
public void printInfo(){
System.out.println("获取Annotaion信息");
}
}
public class AnnotationDemo04 {
public static void main(String[] args) {
Class<SimpleBean> classz = SimpleBean.class;
try{
Method method = classz.getMethod("printInfo", null);
if(method.isAnnotationPresent(Myannotation05.class)){
Myannotation05 info = method.getAnnotation(Myannotation05.class);
System.out.println("姓名:"+info.name()+"、 性别:"+info.sex()+"、 年龄:"+info.age());
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

另一个例子:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface VIPAnnotation {
int value();
}

enum DateEnum {
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}

@interface UserdefinedAnnotation {
DateEnum week();
}

public class Concert {
@VIPAnnotation(250)
public void attend(){
System.out.println("观看演出......");
}

/*public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchMethodException {
Class<Concert> clazz = Concert.class;
Object object = clazz.newInstance();
Method method = clazz.getMethod("attend", new Class[]{});
//首先都是可以看演出的
method.invoke(object, new Object[]{});
//如果他是vip
if(method.isAnnotationPresent(VIPAnnotation.class)){
//获得实现了的标记
VIPAnnotation vipAnnotation = method.getAnnotation(VIPAnnotation.class);
int sequcence=vipAnnotation.value();
System.out.println("享受贵宾待遇....");
if(250==sequcence){//看是否为第250号
//还可以享受贵宾待遇
System.out.println("和演员合影.......");
}
}
}*/

@UserdefinedAnnotation(week=DateEnum.Sunday)
public static void main(String[] args) {
System.out.println("hello");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值