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

Java中的反射机制

获取字节码文件对象的三种方式

 

 1,(常用)源代码阶段,Class.forName("全类名")

2,(传参)加载阶段 类名.class

3,(前提有对象)运行阶段 对象.getClass()


Java反射机制(动态获取类的信息)

         框架需要处理任意类,而框架只知道类的地址,就需要对不同的类进行创建对象,方法调用。

        框架通过反射机制,在只知道类地址的情况下,就可以操作类。 

        框架可以通过反射机制在写一套处理程序后,就可以达到以不变应万变。

        java的反射机制在运行状态中,可以动态获取任意类的信息,并且可以创建对象,还可以调用任意对象的方法和属性。这种动态获取,调用的机制称java反射机制。(反向使用类)

反向使用类的前提:获取Class字节码对象。

Class类中的方法

        constructor.setAccessible(true);//设置指定构造方法为允许访问   暴力反射:表示临时取消权限校验constructor.getModifiers();//获取构造方法的权限修饰符adminClass.getConstructor();//获取指定参数个数的公共构造方法(public)adminClass.getDeclaredConstructor();//获取指定参数个数的所有构造方法(包括私有)adminClass.getConstructors();//获取所有公共构造方法adminClass.getDeclaredAnnotations();//获取所有构造方法adminClass.getFields();//获取所有属性,返回的是一个Field类型的数组adminClass.getField("gender");//获取公共权限指定名称的属性adminClass.getDeclaredFields();//获取所有属性adminClass.getDeclaredField("gender");//获取指定属性名称的属性adminClass.getMethod("getAds");//获取指定公共方法adminClass.getMethods();//获取所有公共方法adminClass.getDeclaredMethod("getAccount");//获取指定方法adminClass.getDeclaredMethods();//获取所有方法
public class test3 {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {Class adminClass = Class.forName("com.ffyc.mybatis.model.Admin");//获取Admin类的Class对象Constructor constructor=adminClass.getConstructor();//获取类的一个无参构造方法(公共的)Object obj=constructor.newInstance();//新建一个对象constructor = adminClass.getDeclaredConstructor(int.class);//获取有一个参数的构造方法(包括私有)constructor.setAccessible(true);//设置私有的为允许访问obj = constructor.newInstance(10);//新建一个对象System.out.println(obj.toString());System.out.println(adminClass.getDeclaredConstructors().length);//获取所有构造方法(包括私有)}
}

暴力反射:表示临时取消权限校验。

.setAccessible(true);

 

相关文章:

  • 09-MySQL主从复制
  • idea 一直卡在maven正在解析maven依赖
  • asp.net core 生命周期
  • SpringBoot Kafka消费者 多kafka配置
  • 【星海出品】flask(一)demo
  • 【Nginx39】Nginx学习:upstream服务器组模块
  • 教给孩子们如何认真听讲
  • windowCPU虚拟化已禁用解决方案
  • AIX5.3安装weblogic10.3
  • 已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够
  • 【23真题】简单!原题很多!211!
  • IEC104 工具和代码库
  • 【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过PDO跑循环同步位置模式详解
  • Android 12.0 内置MTK平台音乐播放器
  • pytorch搭建squeezenet网络的整套工程(升级版)
  • Angular 响应式表单 基础例子
  • Fundebug计费标准解释:事件数是如何定义的?
  • js面向对象
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MySQL数据库运维之数据恢复
  • MySQL用户中的%到底包不包括localhost?
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 一天一个设计模式之JS实现——适配器模式
  • 栈实现走出迷宫(C++)
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • const的用法,特别是用在函数前面与后面的区别
  • 如何正确理解,内页权重高于首页?
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2022 CVPR) Unbiased Teacher v2
  • (3)(3.5) 遥测无线电区域条例
  • (LeetCode C++)盛最多水的容器
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一一四)第九章编程练习
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .gitattributes 文件
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core中的去虚
  • .net MySql
  • @Autowired和@Resource的区别
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • []FET-430SIM508 研究日志 11.3.31
  • [2021 蓝帽杯] One Pointer PHP
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效