美文网首页
反射和注解的应用

反射和注解的应用

作者: 眼若繁星丶 | 来源:发表于2020-11-11 12:07 被阅读0次

反射和注解的应用

一、利用Properties读取配置文件,再用反射进行获得类的方法调用

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class ReflectTest {
    public static void main(String[] args) throws Exception {
        //Properties读取配置文件
        Properties pro = new Properties();
        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        pro.load(is);

        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");

        // 利用反射来调用获得的类中的方法
        // className为要用的类的路径名
        Class<?> cls = Class.forName(className);
        // 通过getConstructor()获得无参构造方法,再newInstance创建对象,作为后面方法调用的载体对象
        Object obj = cls.getConstructor().newInstance();
        // 反射获取方法,先传方法名称,再按顺序传参数的类型字节码,基本类型也可以用.class的方式来获得字节码
        Method method = cls.getMethod(methodName, String.class);
        // 暴力反射
        method.setAccessible(true);
        // invoke调用方法,先传载体对象,再按顺序传参,与反射获取对象的对饮字节码一一对应
        method.invoke(obj, "卢本伟");

    }
}

二、利用注解来简化读取配置文件的步骤,然后进行反射应用

import java.lang.reflect.Method;

@MyAnnotation(className = "Student", methodName = "method2")
public class ReflectAnnotationTest {
    public static void main(String[] args) throws Exception {
        Class<ReflectAnnotationTest> cls = ReflectAnnotationTest.class;
        // 用本类的字节码文件,来获取加在本类上的注解里信息
        MyAnnotation annotation = cls.getAnnotation(MyAnnotation.class);
        String className = annotation.className();
        String methodName = annotation.methodName();
        /*System.out.println(className);
        System.out.println(methodName);*/
        // 下面就是反射调用方法的常规步骤了
        Class<?> acls = Class.forName(className);
        Object obj = acls.getConstructor().newInstance();
        Method method = acls.getMethod(methodName, String.class);
        method.setAccessible(true);
        method.invoke(obj, "卢本伟");
    }
}

相关文章

  • 反射和注解的应用

    反射和注解的应用 一、利用Properties读取配置文件,再用反射进行获得类的方法调用 二、利用注解来简化读取配...

  • 反射 注解 应用

    今天才知道Java的反射这么强大,可以完全不知道方法名、参数、返回值就能进行方法调用,而且还能拿到方法的返回值,遍...

  • 大连滕泰科技学习笔记2020-06-18

    1,反射作业 1,1 自定义注解和反射的应用需求1:模拟junit测试框架有注解(方法上有)告诉我一个方法名称,(...

  • 注解和反射

    注解和反射

  • 一文搞懂反射泛型和反射注解以及通过注解方式写一个BaseDao

    反射泛型和反射注解概括起来就三步: 自定义注解 通过反射获取注解值 使用自定义注解 最终案例 通过自定义注解,将数...

  • 注解,反射的简单应用

    java的注解和反射学了一直没有用到,主要是框架帮我们封装好了,那就好了,仿写框架就可以开拓新思路仿mybatis...

  • 从Java到Kotlin(七)

    反射和注解 目录 1.反射1.1类引用1.2函数引用1.3属性引用 2.注解2.1声明注解2.2构造函数 1.反射...

  • 注解和反射

    (1)注解@Interface(2)@Retention 注解可以保留多长时间:RetentionPolicy....

  • 注解和反射

    注解 什么是注解? 通俗易懂的来说:注释是给人看的,注解可以给机器看。 注解是从JDK5.0引入的新技术。 内置注...

  • 注解和反射

    1、注解的基本理解https://www.jianshu.com/p/9471d6bcf4cf[https://w...

网友评论

      本文标题:反射和注解的应用

      本文链接:https://www.haomeiwen.com/subject/kceebktx.html