首页 > 编程语言 >Java反射是什么?

Java反射是什么?

时间:2023-08-25 14:00:50浏览次数:38  
标签:反射 Java 对象 什么 编译 动态 任意 类名

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

辅助理解反射:

静态编译:在编译时确定类型,绑定对象。

动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。

我们可以明确的看出动态编译的好处,而反射就是运用了动态编译创建对象。

例一:

开发中,我们需要把一个包中的class new出来,但是这个包中的类总是需要变动,那么怎么办,难道总是修改main方法中xxx=new xxx()吗。这样无疑是麻烦的。而运用反射。我们可以相应的增加一个配置文件,在里面记录包中所有的类名,包中类增加时就加一个类名,删除时就删除一个类名。让main方法去读取这个配置文件中的类名,通过反射获得实例,完全不用我们去修改main方法中的代码。

例二:

大家如果接触过spring,会发现当你配置各种各样的bean时,是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就会根据你的需求去动态加载。不改变程序源码,而往往改变原有正确代码是一种十分危险的行为。

WRITE-BUG研发团队衷心希望【WRITE-BUG数字空间】可以给每位同学一个属于自己的秘密空间,同时祝愿大家在“公开圈子”世界里,遇见志同道合的伙伴们,因为我们与大家一样,都曾孤独前行着。

Java反射是什么?_main方法

Java反射是什么?_类名_02

Java反射是什么?_动态编译_03

标签:反射,Java,对象,什么,编译,动态,任意,类名
From: https://blog.51cto.com/u_16125770/7230217

相关文章

  • if if if 判断 和 if elif elif 判断有什么区别
    ififif判断和ifelifelif判断有什么区别在Python中,if语句和if-elif-else语句都用于条件控制,但它们在处理条件和执行逻辑上有一些区别。if语句:if语句用于执行一系列条件之一的代码块。你可以使用多个if语句来检查多个条件,但每个条件都会被逐一检查,即使前面的条件为真,后续......
  • java线程池
    Executors创建线程的4种方法//1.newSingleThreadExecutor创建“单线程化线程池”//特点://单线程化的线程池中的任务是按照提交的次序顺序执行的。//只有一个线程的线程池。//池中的唯一线程的存活时间是无限的。//......
  • curl的用法| curl是什么意思
    骑士李四记录;1.在服务器上查看请求是否返回正常:curl-ihttp://127.0.0.1:8080/api/abc返回这个表示请求返回ok。更多参考大神笔记:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html......
  • java.lang.NoClassDefFoundError问题解决方案
    骑士李四记录:场景在pom.xml中引入一个包,之后启动部署项目,出现java.lang.NoClassDefFoundError的问题。报错信息:解决方案:加入这段代码<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executi......
  • java中 while循环和 do while循环的区别| while与do while的区别
    1、while循环:表示如果条件满足,程序一直循环执行,直到条件不满足为止。所以while循环的条件一般通过变量来进行控制,在循环体内对变量值做相应改变,以便在适当的时候退出,避免陷入死循环。inti=1;while(i<5){//业务逻辑if(i%2>0){System.out.print(“i是偶数”)}else{Sys......
  • 基于java的教学辅助平台
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了教学辅助平台的开发全过程。通过分析教学辅助平台管理的不足,创建了一个计算机管理教学辅助平台的方案。文章介绍了教学辅助平台的系统分析部分,包括可行性分析等,系统设计部分主要介绍了......
  • 解放双手!ChatGPT助力编写JAVA框架! | 京东云技术团队
    亲爱的Javaer们,在平时编码的过程中,你是否曾想过编写一个Java框架去为开发提效?但是要么编写框架时感觉无从下手,不知道从哪开始。要么有思路了后对某个功能实现的技术细节不了解,空有想法而无法实现。如果你遇到了这些问题,看完这篇文章你也能用ChatGPT编写一个简单的JAVA框架。构思清......
  • 【Java复杂系统实战经验-2023-08月】Java基础,Path路径计算编码
    Java程序设计-个人月报-2023-08月背景在本月,给负责的项目做了一次文件存储的迁移工作。历史原因,开发阶段由于图简便,使用了本地文件存储。后面经过容器化上云,导致应用出现上传文件分发的多节点的问题。本项工作的经验,受益于Java基础Path的一些API,颇有收获。复杂的系统应当构......
  • 浏览器输入网址 发生了什么
    敲域名回车查询本地dns缓存,看是否有域名对应的ip地址,如没有查询向远程ip地址服务器发送http请求服务器返回响应请求,向用户发送数据浏览器对返回的数据进行渲染(全球DNS根服务器只有13台,我们输入的网址(域名)是IP地址的一个别名,在一个DNS内,一个域名对应一个IP地址。域名系统(DNS)的......
  • java内存管理 美好的期望与现实的残酷
    美好的期望---看山是山,看水是水犹记得当年刚入门学Java课时;99%的java基础性书籍和带领入门的老师都会介绍java的一项优点;即:Java语言不使用指针,它加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。刚开始接触这段话时,心理感觉java语言太优秀了,尤其是在大一学......