敲黑板!java反射机制和原理

news/2024/11/7 20:53:15/
  1. 获取Class对象:首先,你需要获取表示要操作的类的Class对象。可以使用以下三种方式之一来获取Class对象:

    • Class.forName()方法:使用类的全限定名获取Class对象,例如:Class<?
      Class<?> clazz = MyClass.class;
      
      > clazz = Class.forName("com.example.MyClass");
    • .class语法:如果你已经有了类的实例,可以使用.class语法来获取Class对象,例如:Class<?> clazz = MyClass.class;
    • getClass()方法:如果你已经有了类的实例,还可以使用getClass()方法获取Class对象,例如:Class<?> clazz = myObject.getClass();
  2. 获取类的构造方法、方法或字段:一旦你有了Class对象,就可以使用它来获取类的构造方法、方法或字段。

    • 获取构造方法:使用getConstructor()getDeclaredConstructor()方法,例如:Constructor<?> constructor = clazz.getConstructor(paramTypes);
    • 获取方法:使用getMethod()getDeclaredMethod()方法,例如:Method method = clazz.getMethod("methodName", paramTypes);
    • 获取字段:使用getField()getDeclaredField()方法,例如:Field field = clazz.getField("fieldName");
  3. 调用方法或访问字段:一旦你有了方法或字段的引用,就可以使用它们来调用方法或访问字段。

    • 调用方法:使用invoke()方法,例如:Object result = method.invoke(object, args);
    • 访问字段:使用get()set()方法,例如:Object value = field.get(object);field.set(object, value);

需要注意的是,反射涉及到对类的访问和操作

  1. 获取类的Class对象:
    Class<?> clazz = MyClass.class;
    

  2. 获取类的构造方法并实例化对象:
    Constructor<?> constructor = clazz.getConstructor();
    Object object = constructor.newInstance();
    

  3. 获取方法并调用:
    Method method = clazz.getMethod("methodName", parameterTypes);
    Object result = method.invoke(object, arguments);
    

  4. 获取字段并访问:
    Field field = clazz.getField("fieldName");
    Object value = field.get(object);
    field.set(object, newValue);
    

    我们平时的get,set方法的调用也是反射的使用之一,我认为反射就是来调用别的类的方法的手段,是Java常用基础方法之一


http://www.ppmy.cn/news/301335.html

相关文章

找不到xinput1_3.dll怎么办?xinput1_3.dll丢失的四个修复方法

在我们打开游戏的或者软件的时候&#xff0c;电脑提示“找不到xinput1_3.dll&#xff0c;无法继续执行此代码”怎么办&#xff1f;相信困扰着不少小伙伴&#xff0c;我再在打开吃鸡的时候&#xff0c;然后花了一上午的时候时间研究&#xff0c;现在终于知道xinput1_3.dll文件是…

【数据结构与算法】掌握顺序栈:从入门到实践

&#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f331;系列专栏&#xff1a;数据结构与算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 顺序栈的实现 初始化栈 判断栈空 判断栈满 入&#xff08;进&#xff09;栈 出栈 获取栈…

Dubbo中的常用组件

微服务的架构主要包括服务描述、服务发现、服务调用、服务监控、服务追踪以及服务治理这几个基本组件。 那么每个基本组件从架构和代码设计上该如何实现&#xff1f;组件之间又是如何串联来实现一个完整的微服务架构呢&#xff1f;今天我就以开源微服务框架Dubbo为例来给你具体…

新技能Get!宏基因组分析结果导入qiime2分析和可视化

最近读微生态公众号中宏基因组的文章&#xff0c;发现阿童木写的教程&#xff0c;宏基因组的数据可以导入qiime2分析。于是有了发现新大陆的感觉&#xff0c;qiime2是一个优秀的可视化工具&#xff0c;有它在手&#xff0c;分析不愁呀&#xff0c;可是作者并没有给出怎样导入数…

计算机自检后反复重启 主引导,电脑开机停留在商标界面-电脑一开机就停留在主板标志界面,进不了bios设置,重启也一样,怎么办?...

大家在商标注册过程中可能会有电脑开机停留在商标界面的问题,今天就由慧用心为大家从以下几个方面:电脑一开机就停留在主板标志界面,进不了bios设置,重启也一样,怎么办?、电脑开机后一直卡在技嘉主板的logo界面上 一直进不去系统!! 求解决办法。~、戴尔笔记本电脑开机一…

宏基因组分析-基于binning

一、介绍 宏基因组 ( Metagenome) 指特定环境下所有生物遗传物质的总和。它包含了可培养的和未可培养的微生物的基因。一般从环境样品中提取基因组DNA, 进行高通量测序&#xff0c;从而分析微生物多样性、种群结构、功能信息、与环境之间的关系等。 宏基因组的分析目前主要包…

宏基预装linux换win7,宏基笔记本电脑预装win8改win7系统教程详细图解

写在前面&#xff1a;面对目前笔记本市场品牌&#xff0c;型号各异的笔记本&#xff0c;很多朋友在预装win8改win7的方法无从下手。其实&#xff0c;大部分笔记本厂商都有着一种完善的安装方法&#xff0c;能够直接反映出一款笔记本的部分或者全部信息。可能有一些热爱笔记本电…

宏基4730拆机后蓝屏重启

宏基的一些电脑拆机往往是要把主板拆下来的&#xff0c;你很可能把cmos电池也拔了&#xff0c;这样可能会导致bios设置丢失。既然能看到xp标志就说明没什么大问题&#xff0c;这个问题一般是因为硬盘模式你把AHCI改成Compatible或者compatible改回AHCI。这在电脑维修上是常见的…