java注解和反射

注解和反射
何为java注解

官方的定义是这样的:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类:

  • ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
  • ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
  • ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
我的理解

注解是一个标识,可以标识在类上,可以标识在方法上,也可以标识在某些属性上,注解是给机器看的符号,注解要保留在内存上,因为jvm只能在内存里读取数据。注解一般配合反射使用做一些判断。

java反射

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。简单的说就是,就是在程序运行的时候,允许对其内部的成员进行操作,比如创建对象,调用方法啥的

注解和反射实例演示

首先先写一个注解就叫MyAnnotation

package com.xu.demo.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}

接着我们写一个类有4个方法

public class demo {
public void save(){
    System.out.println("保存方法--------------------");
}
public void update(){
        System.out.println("更新方法--------------------");
    }
    @MyAnnotation
    public void deleteAll(){
        System.out.println("删库方法--------------------");
    }
    @MyAnnotation
    public void run(){
        System.out.println("跑路方法--------------------");
    }
}

我在删库和跑路方法上加了我写的注解,我要告诉机器,你看到有我写的注解你就执行这个方法,其他的不要执行

接着我们写main方法启动程序,通过反射获取对象,获取对象的所有方法

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException {
        //获取Class  反射
        Class testClass = Class.forName("com.xu.demo.test.demo");
        //创建对象
        Object o = testClass.newInstance();
        //获取该对象的所有方法
        Method[] allMethods = testClass.getDeclaredMethods();
        for (Method method : allMethods) {
            //判断这个方法上是否有我自己写的zhuj
            if(method.isAnnotationPresent(MyAnnotation.class)){
                method.invoke(o);
            }
        }
    }

运行结果
在这里插入图片描述
非常完美哈哈哈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小徐404

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值