首页 > 编程语言 >JAVA中的反射机制讲解(JAVA基础)

JAVA中的反射机制讲解(JAVA基础)

时间:2024-07-09 21:58:50浏览次数:13  
标签:反射 Java 对象 获取 讲解 JAVA 机制 Class

反射是什么

Java 反射机制是Java语言一个很重要的特性,它使得Java具有了“动态性”。在Java程序运行时,对于任意的一个类,我们能不能知道这个类有哪些属性和方法呢?对于任意的一个对象,我们又能不能调用它任意的方法?答案是肯定的!这种动态获取类的信息以及动态调用对象方法的功能就来自于Java 语言的反射(Reflection)机制。

反射的作用

简单来说两个作用,RTTI(运行时类型识别)和DC(动态创建)。我们知道反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!

反射机制的核心class信息

1.实际上,我们在加载任何一个类时都会在方法区中建立“这个类对应的Class对象”,由于“Class对象”包含了这个类的整个结构信息,所以我们可以通过这个“Class对象”来操作这个类。
2.我们要使用一个类,首先要加载类;加载完类之后,在堆内存中,就产生了一个 Class 类型的对象(一个类只有一个 Class 对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象知道类的结构。这个对象就像一面镜子,透过这个镜子可以看到类的结构,所以,我们形象的称之为:反射。 因此,“Class对象”是反射机制的核心。 

反射的具体实现

1.获取Class对象的三种方式

1.通过.getClass()方法;
2.通过.class 静态属性;
3.通过Class类中的静态方法forName();

2.通过Class对象获取类的构造方法

3.通过Class对象获取类的成员变量

4.通过Class对象获取类的方法

JAVA反射机制的优缺点以及总结

Java 反射机制是Java语言一个很重要的特性,它使得Java具有了
“动态性”。
1.反射机制的优点:
更灵活。
更开放。
2.反射机制的缺点:
降低程序执行的效率。
增加代码维护的困难。
3.获取Class类的对象的三种方式:
运用getClass()。
运用.class 语法。
运用Class.forName()(最常被使用)。
4.反射机制的常见操作
动态加载类、动态获取类的信息(属性、方法、构造器)。
动态构造对象。
动态调用类和对象的任意方法。
动态调用和处理属性。
获取泛型信息。 

标签:反射,Java,对象,获取,讲解,JAVA,机制,Class
From: https://blog.csdn.net/m0_63025333/article/details/140306671

相关文章

  • 基于SpringBoot+Vue+uniapp的酒店客房管理系统的详细设计和实现(源码+lw+部署文档+讲
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的干洗店预约洗衣系统的详细设计和实现(源码+lw+部署文档+
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Java毕设基于Vue+SpringBoot的校园台球厅人员与设备管理系统(代码+数据库+文档LW+运行
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括校园台球厅人员与设备管理系统的网络应用,在外国管理系统已经是很普遍的方式,不过国内的管理网站可能......
  • 如何用Java python php 实现身份实名人证?
    身份证实名认证,也被称为身份证识别或核验身份信息,是指基于直连公安大数据,在用户授权后,通过姓名、身份证号实时快速核验用户身份信息真伪的过程。这种认证方式可以与身份证OCR(光学字符识别)和活体检测技术灵活融合,广泛应用于需要用户实名认证的行业场景,如电商、游戏、直播等。......
  • [NodeJS] JavaScript模块化
    JavaScript诞生于1995年,一开始只是用于编写简单的脚本。随着前端开发任务越来越复杂,JavaScript代码也越来越复杂,全局变量冲突、依赖管理混乱等问题变得十分突出,模块化成为一个必不可少的功能。模块化发展史与方案对比YUI与JQuery2006年,雅虎开源了组件库YUILibrary,使用类似......
  • 【JavaScript脚本宇宙】状态管理利器:JavaScript 库全面解析
    提升项目效率与可维护性:JavaScript状态管理库大揭秘前言在现代前端开发中,状态管理是一个至关重要的话题。随着复杂性的增加,有效地管理应用程序的状态变得越来越具有挑战性。本文将介绍一些流行的JavaScript库,这些库提供了各种方式来管理状态和数据流。欢迎订阅专栏:Ja......
  • Java基础入门了解,规范----入门篇1
    一.Java代码规范1.注释注释分类:1.单行注释:// 2.多行注释:/**/ 3.文档注释:/***/2.关键字java本身定义的一些单词,类似于public,class之内3.标识符在程序中定义的属性名,方法名,类名等等1.硬性要求:可以包含英文字母,0-9数字,$,_不能以数字开头关键字不能作为标识符2.软性......
  • 基于Spring Boot的旅游信息推荐信息系统设计与实现(源码+lw+部署+讲解)
    技术指标 开发语言:Java框架:SpringBoot+JSPJDK版本:JDK1.8数据库:MySQL5.7数据库工具:Navicat16开发软件:IDEAMaven包:Maven3.6.3浏览器:IE浏览器 功能描述旅游信息推荐信息系统设计与实现的功能主要分为俩部分:前台界面管理和后台数据库管理。它的主要功能包括:对旅游新闻......
  • [Java面向对象]
    面向对象修饰符接口接口中方法的访问修饰符默认是publicabstract在Java接口中,接口中的方法默认是公共的(public),且不允许使用其他的访问修饰符。接口中定义的方法会被隐式地指定为publicabstract,这两个修饰符可以省略,因为它们是默认的。所以,Java接口中方法的定义形式通......
  • [Java基础]
    数据类型Java的数据类型包括基本数据类型和引用数据类型:基本数据类型:整形:byte,short,int,long浮点型:float,double字符型:char布尔型:boolean引用数据类型:class,interface,array。引用拷贝,浅拷贝,深拷贝引用拷贝在Java中,对象的引用拷贝是指将一个对象的引......