首页 > 其他分享 >框架中处处可见反射的运用,你对它了解多少?

框架中处处可见反射的运用,你对它了解多少?

时间:2023-03-21 13:11:21浏览次数:32  
标签:反射 java 框架 对象 处处 访问 方法 Class

什么是反射

反射是一种能够在程序运行时动态访问、修改某个类中任意属性(状态)和方法(行为)的机制(包括private实例和方法),java反射机制提供了以下几个功能:

  • 在运行时判断任意一个对象所属的类;
  • 在运行时构造任意一个类的对象;
  • 在运行时判断任意一个类所具有的成员变量和方法;
  • 在运行时调用任意一个对象的方法。

反射涉及到四个核心类:

  • java.lang.Class.java:类对象;
  • java.lang.reflect.Constructor.java:类的构造器对象;
  • java.lang.reflect.Method.java:类的方法对象;
  • java.lang.reflect.Field.java:类的属性对象;

反射有什么用?

  • 操作因访问权限限制的属性和方法;
  • 实现自定义注解;
  • 动态加载第三方jar包,解决android开发中方法数不能超过65536个的问题;
  • 按需加载类,节省编译和初始化APK的时间;

反射工作原理

当我们编写完一个Java项目之后,每个java文件都会被编译成一个.class文件,这些Class对象承载了这个类的所有信息,包括父类、接口、构造函数、方法、属性等,这些class文件在程序运行时会被ClassLoader加载到虚拟机中。

当一个类被加载以后,Java虚拟机就会在内存中自动产生一个Class对象。我们通过new的形式创建对象实际上就是通过这些Class来创建,只是这个过程对于我们是不透明的而已。

反射的工作原理就是借助Class.java、Constructor.java、Method.java、Field.java这四个类在程序运行时动态访问和修改任何类的行为和状态。

反射的特点

优点

  • 灵活、自由度高: 不受类的访问权限限制,想对类做啥就做啥;

 缺点

  • 性能问题:通过反射访问、修改类的属性和方法时会远慢于直接操作,但性能问题的严重程度取决于在程序中是如何使用反射的。如果使用得很少,不是很频繁,性能将不会是什么问题;
  • 安全性问题:反射可以随意访问和修改类的所有状态和行为,破坏了类的封装性,如果不熟悉被反射类的实现原理,随意修改可能导致潜在的逻辑问题;
  • 兼容性问题:因为反射会涉及到直接访问类的方法名和实例名,不同版本的API如果有变动,反射时找不到对应的属性和方法时会报异常;

 

标签:反射,java,框架,对象,处处,访问,方法,Class
From: https://www.cnblogs.com/xfeiyun/p/17238694.html

相关文章

  • 脚本编写的一个通用框架
    总结基于python写脚本的框架#-*-encoding:utf-8-*-#@time:2023/3/2112:11#@author:Maxs_hu"""基于python实现小脚本的基础框架:1.利用yield生成器函数,......
  • 阅读jdk源码和框架源码有什么好处?
    感受一种优秀的编程思想:通过阅读JDK源码和框架源码,可以学习到Java编程中很多优秀的设计思想,例如面向对象编程、设计模式以及良好的编码风格等。理解底层原理:深入学习JDK源......
  • 反射 转载
    .net基础--反射1、什么是反射元数据是指程序以及类型信息的数据,它包含在程序集中(程序集包含:元数据,编译代码,资源)。在.net中反射是查看和操作元数据的动作。2、为什么......
  • Flink计算框架概述
    Flink是一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。目前,Flink主要还是依靠开源社区的贡献来发展的。对于Flink,其处理的数据主要是流数据,批数据只是流......
  • 使用 Python 实现一个 RPC 框架
    1.概述RPC是什么?RPC(RemoteProcedureCallProtocol),RPC是指远程过程调用,比如现在有两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方......
  • Comet4J AJAX 服务器推送框架
    Comet4J(CometforJava)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。功能特性推送消息广播。......
  • 改进 hibernate-validator,新一代校验框架 validator 使用介绍 v0.4
    项目介绍java开发中,参数校验是非常常见的需求。但是hibernate-validator在使用过程中,依然会存在一些问题。validator在hibernate-validator等校验工具之上,做了一些......
  • 搬运python 框架
    从GitHub中整理出的15个最受欢迎的Python开源框架。这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等。 Django:PythonWeb应用开发框架Django......
  • 常用开源微服务框架有几个特点?
    近些年,随着低代码开发技术的盛行,开源微服务框架的发展也逐渐成熟。很多客户朋友咨询关于开源微服务的特点和优势,今天,我们就针对客户朋友较为关注的话题做一个内容介绍。概......
  • Java敏捷开发框架 高效搭建数据报表
    随着数字化转型在企业中不断深入推动,对企业的财务领域的转型也带来巨大的冲击。外部市场环境的快速变化,使企业经营者的决策时间从原来的几年和几个月缩短到几周甚至几天,组......