java反射菜鸟教程_Java反射

java反射菜鸟教程_Java反射JAVA反射机制1定义:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!2.作用A:反编译:.class–>.javaB:通过反射机制访问java对象的属性…

大家好,又见面了,我是你们的朋友全栈君。

JAVA反射机制

1定义:

主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!

2.作用

A:反编译:.class–>.java

B:通过反射机制访问java对象的属性,方法,构造方法等;

这样好像更容易理解一些,下边我们具体看怎么实现这些功能。

3.获取Class对象有三种方式:

(1)..通过Object类的getClass()方法。例如:

Class c1 = new String(“”).getClass();

(2).通过Class类的静态方法——forName()来实现:

Class c2 = Class.forName(“MyObject”);

(3).如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了 与其匹配的Class对象,例如:

Class c3 = Manager.class;

Class c4 = int.class;

Class c5 = Double[].class;

4.Class类中存在以下几个重要的方法:

a.getName()

一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类 的简要描述。由于历史原因,对数组的Class对象

调用该方法会产生奇怪的结果。

b.newInstance()

该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类 的默认构造方法。例如:

MyObject x = new MyObject();

MyObject y = x.getClass().newInstance();

c.getClassLoader()

返回该Class对象对应的类的类加载器。

d.getComponentType()

该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对 象。例如:

int[] ints = new int[]{1,2,3};

Class class1 = ints.getClass();

Class class2 = class1.getComponentType();

而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。

e.getSuperClass()

返回某子类所对应的直接父类所对应的Class对象。

f.isArray()

判定此Class对象所对应的是否是一个数组对象。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143686.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • delphi XE5 调试DLL「建议收藏」

    delphi XE5 调试DLL「建议收藏」1、设置HOSTAPPLICATION:RUN—PARAMETERS—-HOSTAPPLICATION选择EXE所在路径2、PROJECTS—-OPTIONS—–COMPILING下的黑体的属性全部变为普通的3、在DLL加入断点就可以调试了4、如果进不去的话,那么说明这个DLL本身是有问题的。我在调试的时候因为DLL中封装的类似于ADOQuery控件的一种控件

  • blender2.9教程_赖世雄入门篇

    blender2.9教程_赖世雄入门篇Blender2.8基础(一)基础操作与常用快捷键▶Ctrl+N:创建新工程一、视图操作1、放大视图▶视图最大化显示:Ctrl+空格(左键点击视图任意地方可以选择视图,然后按Ctrl+空格可以最大化显示视图。)▶切换全屏模式:Ctrl+Alt+空格2、切换视图▶切换视图:Alt(按住不放)+按住中键上下或左右移动鼠标(每切换一次视图就必须重新按一下中键并移动鼠标)▶……

  • maven的filters目录详解

    maven的filters目录详解maven的资源过滤maven的过滤资源需要结合maven的2个定义才能实现,分别是:profileresources下面分开来做介绍。profileprofile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。需要掌握profile的定义以及激活条件。后面结合

  • 回顾外滩踩踏事件,吸取的教训[通俗易懂]

    回顾外滩踩踏事件,吸取的教训[通俗易懂]外滩踩踏事故:悲剧为何发生?外滩踩踏事故:悲剧为何发生?截至当前,上海外滩踩踏事故已造成36人遇难、47人受伤。事故发生的原因初步显现,为外滩观景平台的人流对冲。很多人认为这种归因过于简单,更何况

  • Xshell 配置上传下载命令 rz sz 以及配置复制和粘贴[通俗易懂]

    Xshell 配置上传下载命令 rz sz 以及配置复制和粘贴[通俗易懂]Xshell 配置上传下载命令 rz sz 以及配置复制和粘贴

  • python:Unittest单元测试框架「建议收藏」

    python:Unittest单元测试框架「建议收藏」​单元测试1、单元测试(unittesting),是指对软件中的最小可测试代码单元进行检查和验证⑴是针对于代码的一种测试方法,测试的是代码2、对于”代码单元”中单元的含义,一般来说,要根据实际情况去判定其具体含义:⑴如C语言中单元指一个函数、Java里单元指一个类、图形化的软件中可以指一个窗口或一个菜单等⑵单元可以是一个函数、方法、类、功能模块或者子系统⑶总的来说,单元就是人为规定的最小的被测功能模块3、单元测试针对的是每一个独立的代码单元,代码单元应不…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号