• 【反射】Java反射机制 -- 常用构造器与方法


    在这里插入图片描述

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
    个人主页:.29.的博客
    学习社区:进去逛一逛~

    在这里插入图片描述


    Java反射


    什么是反射?

    • 反射允许对成员变量,成员方法和构造方法的信息进行编程访问。

    反射的作用

    • ①获取一个类里面所有的信息,获取到之后,在执行其它业务逻辑。
    • ②结合配置文件,动态创建对象并调用。



    1. 获取class对象的三种方式

    • Class.forName("全类名");

      • 最常用
    • 类型.class

      • 常作为参数进行传递
    • 对象.getClass();

      • 当有了这个类的对象时才可以使用
      • /**
         * @author .29.
         * @create 2023-10-20 21:36
         */
        public class reflectDemo {
            public static void main(String[] args) throws ClassNotFoundException {
                //Student类是一个自定义的JavaBean类
                
                //1. Class.forName("全类名")
                Class clazz1 = Class.forName("com.haojin.myReflect.Student");
        
                //2. 类名.class
                Class clazz2 = Student.class;
        
                //3. 对象.getClass()
                Student student = new Student();
                Class clazz3 = student.getClass();
        
                //获取到的class对象,都是一致的
                System.out.println(clazz1 == clazz2); //true
                System.out.println(clazz2 == clazz3); //true
            }
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23



    2. 反射 - 获取构造方法

    Class类中用于获取构造方法的方法

    • Constructor[] getConstructors():返回所有公共构造方法对象的数组。
    • Constructor[] getDeclaredConstructors():返回所有构造方法对象的数组。
    • Constructor getConstructor(Class... parameterTypes):返回单个公共构造方法的对象。
    • Constructor getDeclaredConstructor(Class... parameterTypes):返回单个构造方法的对象。

    Constructor类中用于创建对象的方法

    • T newInstance(Object... initargs):根据指定的构造方法创建对象。
    • setAccessible(boolean flag):设置为true,表示取消访问检查。



    3. 反射 - 获取成员变量

    Class类中用于获取成员变量的方法

    • Field[] getFields():返回所有公共成员变量对象的数组。
    • Field[] getDeclaredFields():返回所有成员变量对象的数组。
    • Field getField(String name):返回放个公共成员变量对象。
    • Field getDeclaredField(String name):返回单个成员变量对象。

    Field类中用于创建对象的方法

    • void set(Object obj,Object value):为成员变量赋值。
    • Object get(Object obj):获取成员变量的值。



    4. 反射 - 获取成员方法

    Class类中用于获取成员方法的方法

    • Method[] getMethods():返回所有公共成员方法对象的数组,包含继承的。
    • Method[] getDeclaredMethods():返回所有成员方法对象的数组,不包括继承的。
    • Method getMethod(String name,Class... parameterTypes):返回单个公共成员方法对象。
    • Method getDeclaredMethod(String,Class... parameterTypes):返回放个成员方法对象

    Method类中用于创建对象的方法

    • Object invoke(Object obj,Object...args):运行方法。
      • 参数一:用obj对象调用该方法。
      • 参数二:调用方法时传递的参数(没有可以不写)
      • 返回值:方法的返回值(没有可以不写)



    在这里插入图片描述

  • 相关阅读:
    计算机毕业设计python基于django在线课程网站 含资源,考试,论坛等功能
    vim打开文件时执行命令
    【前端知识】Three 学习日志(十)—— 常见几何体(长方体、球体、圆柱、矩形平面、圆形平面)
    博途PLC 1200/1500PLC MODBUS通讯优化(状态机编程)
    Python 操作 Excel,如何又快又好?
    redis 数据结构,及其常用命令
    云原生 PostgreSQL - CrunchyData PGO 教程:创建、连接、删除 Postgres 集群
    Apache Spark分布式计算框架架构介绍
    AQS 框架中 setState() 和 setExclusiveOwnerThread() 方法顺序问题
    Oracle常用数值型函数
  • 原文地址:https://blog.csdn.net/ebb29bbe/article/details/134059523