当前位置: 首页 > article >正文

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

在这里插入图片描述

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

在这里插入图片描述

Java反射

  • Java反射
    • 1. 获取class对象的三种方式
    • 2. 反射 - 获取构造方法
    • 3. 反射 - 获取成员变量
    • 4. 反射 - 获取成员方法


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
          }
      }
      



2. 反射 - 获取构造方法

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

  • Constructor<?>[] getConstructors():返回所有公共构造方法对象的数组。
  • Constructor<?>[] getDeclaredConstructors():返回所有构造方法对象的数组。
  • Constructor<T> getConstructor(Class<?>... parameterTypes):返回单个公共构造方法的对象。
  • Constructor<T> 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对象调用该方法。
    • 参数二:调用方法时传递的参数(没有可以不写)
    • 返回值:方法的返回值(没有可以不写)



在这里插入图片描述


http://www.kler.cn/a/105965.html

相关文章:

  • ChromeDriver驱动下载地址更新(保持最新最全)
  • 51单片机--- 矩阵按键仿真
  • 微博短链接平台-项目测试用例设计(Xmind)
  • 《基于 PySpark 的电影推荐系统分析及问题解决》
  • 创建vue3项目步骤
  • Tomcat启动过程中cmd窗口(控制台)中文乱码的问题
  • componentDidMount只执行一次的解决方法
  • 【软件测试】超细HttpRunner接口自动化框架使用案例,一篇策底打通...
  • 更换网络ip地址怎么设置
  • Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况
  • 如何使用SpringBoot处理全局异常
  • MySQL不常用查询
  • Linux下的文件操作和文件管理
  • 微信小程序获取数据的方法——iBeacon蓝牙
  • Adversarial attacks and defenses on AI in medical imaging informatics: A survey
  • Easysearch 容量规划建议
  • OkHttp网络框架深入理解-SSL握手与加密
  • 雪糕冰淇淋经营配送小程序商城效果如何
  • 【Python机器学习】零基础掌握VotingClassifier集成学习
  • 在线设计数据库表用Itbuilder,极简易用真香!!!
  • 基于Jsp+Servlet+MySql的汉服网站的设计与实现-源码+毕业论文
  • 算法工程师-机器学习-数据科学家面试准备4-ML系统设计
  • git 版本管理
  • InterfaceWave 架构图
  • DSP 开发教程(0): 汇总
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘