`
long_yu2
  • 浏览: 313373 次
社区版块
存档分类
最新评论

Java反射机制剖析(二)-功能以及举例

 
阅读更多

《java反射机制剖析(一)》的API我们看到了许多接口和类,我们能够通过这些接口做些什么呢?


从上篇API中我们能看到它能够完成下面的这些功能:


1)获得类

A.运用getClass() (每个class都有此函数)

i. String str = "abc";

ii. Class c1 = str.getClass();

B.运用Class.forName() (static method 最常被使用)

i. Class c1 = Class.forName ("java.lang.String");

ii. Class c2 = Class.forName ("java.awt.Button");

C.运用 .class 语法

i. Class c1 = String.class;

ii. Class c2 = java.awt.Button.class;

iii. Class c4 = int.class;

iv. Class c5 = int[].class;

D.运用 TYPE语法 ( primitive wrapper classes 基本数据类型包装类的 TYPE语法)

i. Class c1 = Boolean.TYPE;

2)获得属性(这个功能的实例见Java反射机制剖析(2))

以下四个方法可以获得属性,主要参见的是Java.lang.class

Public Field getField

(String name)

返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段

public Field[] getFields()

返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段

Public Field

getDeclaredField(String name)

返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段

public Field[]

getDeclaredFields()

返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段

3)获得方法()

以下四个方法可以获得方法,要参见的是Java.lang.class


public Method

getMethod(String name,

... )

返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法

public Method[] getMethods()

返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法

public Method

getDeclaredMethod(String name,…)

返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法

public Method[]

getDeclaredMethods()

返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法

4)获取类的构造器

以下四个方法可以获得方法,要参见的是Java.lang.class


public Constructor

getConstructor(Class<?>... )

返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法

public Constructor<?>[]

getConstructors()

返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法

Public Constructor<T>

getDeclaredConstructor(Class<?>...)

返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法

public Constructor<?>[]

getDeclaredConstructors()

返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法

示例代码:



5)新建类的实例

调用类的Class对象的newInstance方法

示例:



调用默认Constructor对象的newInstance方法

示例:



调用带参数Constructor对象的newInstance方法

示例:




分享到:
评论

相关推荐

    源代码-ajax即时聊天程序(新手学习推荐).zip

    源代码-ajax即时聊天程序(新手学习推荐).zip

    python读取excel数据.doc

    以下是一个简单的Python代码,用于在控制台上打印一个看起来像爱心的形状。这个代码使用了ASCII字符来创建形状。 python print('\n'.join([''.join([('Love'[(x-y)%4] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(15, -15, -1)])) 这个代码使用了数学公式来生成心形。但是,由于ASCII字符的限制,这个心形可能看起来不是很完美。 如果你想要一个更详细和定制化的心形,你可能需要使用图形库,如PIL(Python Imaging Library)或matplotlib。但是,这些库通常用于创建图像文件或在图形用户界面上绘制,而不是在控制台上打印。 另外,这里有一个使用turtle模块在图形窗口中绘制爱心的简单示例: python import turtle # 创建一个新的turtle对象 heart = turtle.Turtl

    【图像评价】图像去雾质量评价【含Matlab源码 066期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    30客户满意度调查表.DOC

    30客户满意度调查表.DOC

    labelme, 一个用于图像标记的工具

    使用python3以上版本

    cn-msdn-library-for-visual-studio-2008-service-pack-1-x86-dvd-x1

    cn_msdn_library_for_visual_studio_2008_service_pack_1_x86_dvd_x1.iso 分卷3

    变更申请单.xls

    变更申请单.xls

    【路缝识别】 GUI形态学路缝识别(带面板)【含Matlab源码 1649期】.zip

    【路缝识别】 GUI形态学路缝识别(带面板)【含Matlab源码 1649期】

    判断回文素数的C语言程序

    附件是判断回文素数的C语言程序,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的! 程序首先定义了两个函数:isPrime 用于判断一个数是否为素数,isPalindrome 用于判断一个数是否为回文。然后在 main 函数中,通过一个循环来检查从2到999(这里假设我们只需要检查小于1000的数)的所有数,如果一个数既是素数又是回文数,就将其打印出来。

    Modbus Poll version 10.9.0 Build 2194

    Modbus Poll version 10.9.0 Build 2194,modbus 主机,包含 32位与64位,非常好用的 modbus 协议主机调试工具

    【表盘识别】 GUI二值化指针式表盘识别【含Matlab源码 275期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    读书屋测试项目,里面涵盖有自动化测试用例以及手工测试用例 此项目主要针对自动化项目用例

    此文档是读书屋的自动化测试用例,

    17产品标识和可追溯性控制程序.doc

    17产品标识和可追溯性控制程序.doc

    【图像融合】形态学分析和稀疏表征CSMCA图像融合【含Matlab源码 4130期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    源代码-ApiAdmin后台管理系统 基于ThinkPHP.zip

    源代码-ApiAdmin后台管理系统 基于ThinkPHP.zip

    【图像隐写】 DCT数字水印嵌入+攻击+提取【含Matlab源码 1758期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像加密】 Logistic混沌+Arnold置乱图像加密解密【含Matlab源码 1281期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像评价】 GUI图像客观评价【含Matlab源码 855期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像加密】混沌系统和DNA编码彩色图像加密解密抗噪声性能分析【含Matlab源码 2414期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics