java中注解的使用

这个java中注解的使用到底是什么意思呢?我开始以为是一种拦截器,可以对数据进行再次处理,然后继续执行。但是,在看了多篇文章后,发现并非如此,我错误的把注解理解成了代理模式(使用了反射机制),注解和代理其实都使用了反射机制。但是思想是不同的,动态代理使用的反射是为了获取运行时某参数,然后就像拦截处理。而注解也使用了反射,他的目的是为了 在属性上起一个别名,在运行时,通过这个别名获取这个参数(数据库处理和findviewid的处理)

例如:我们先创建一个自定义注解:

/**
 * Created by malei on 2018/4/25.
 */
@Target({ElementType.TYPE,ElementType.METHOD}) //作用于类、接口、枚举,但不能是注解 ; 作用于方法、不能是构造方法
@Retention(RetentionPolicy.RUNTIME)  // 在运行时可以通过反射获取到,JVM会读取注解,同时保存在class文件中
public @interface MyAnnotation {

    String name() default "";
    int age() default 18;
}
然后在运行时,我们就可以获取我们写注解的时候,写入的name和age了

Class<UserInfo> clazz = UserInfo.class;
Method[] methds = clazz.getDeclaredMethods(); //获取所有的方法
for (Method method :methds){
    //判断该方法是否存在指定注解
    if(method.isAnnotationPresent(MyAnnotation.class)){
        //返回当前方法上的注解对象
        MyAnnotation reqMapping = method.getAnnotation(MyAnnotation.class);
        //获得注解的值
        System.out.println("方法注解值:"+reqMapping.name());
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值