Java教程

Java反射使用指南

本文主要是介绍Java反射使用指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、Java反射获取类

1.1 通过类全名

Class c = Class.forName("com.vo.Person");

1.2 通过类型获取

Class c =Person.class;

1.3 使用getClass();

Person person = new Person("zm",22);
Class c = person.getClss;



1.4 通过类加载器

    ClassLoader classLoader = this.getClass().getClassLoader();
    Class clazz4 = classLoader.loadClass("com.mysql.cj.jdbc.MysqlDataSource"));
    System.out.println(clazz4.getName());

二、 反射获取方法

2.1 获得所有构造方法

        Class clazz = Class.forName("com.mysql.cj.jdbc.MysqlDataSource");
        Constructor[] constructors = clazz.getDeclaredConstructors();
        System.out.println("------获取类中的构造方法-----------");
        Arrays.stream(constructors).forEach(obj -> {
            System.out.println(obj);
        });

2.2 获取类中定义的方法、修饰符

      System.out.println("------获取类中定义的方法、修饰符-----------");
        for (Method method : methods) {
            System.out.println(method.getName());
            System.out.println(method.getModifiers());
        }

三、反射获取属性

    Class clazz = Class.forName("com.mysql.cj.jdbc.MysqlDataSource");
    System.out.println("-------获取公有的属性------------");
    Field[] fields = clazz.getFields();
    for (Field field : fields) {
        System.out.println(field.getName());
    }
    System.out.println("-------获取所有的属性------------");
    Field[] pubFields = clazz.getDeclaredFields();
    for (Field pubField : pubFields) {
        pubField.setAccessible(true);
        System.out.println(pubField.getName());
    }

四、注解

4.1 类上注解

        // 此处要用反射将字段中的注解解析出来  
        Class<ReflectAnnotation> clz = ReflectAnnotation.class;  
        // 判断类上是否有次注解  
        boolean clzHasAnno = clz.isAnnotationPresent(FieldTypeAnnotation.class);  
        if (clzHasAnno) {  
            // 获取类上的注解  
            FieldTypeAnnotation annotation = clz.getAnnotation(FieldTypeAnnotation.class);  
            // 输出注解上的属性  
            int age = annotation.age();  
            String[] hobby = annotation.hobby();  
            String type = annotation.type();  
            System.out.println(clz.getName() + " age = " + age + ", hobby = " + Arrays.asList(hobby).toString() + " type = " + type);  
        }

4.2 方法上注解

4.3 字段上注解

这篇关于Java反射使用指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!