Java反射机制剖析:功能以及举例

发表于:2012-2-10 09:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lfsf802    来源:51Testing软件测试网采编

  从《Java反射机制剖析:定义和API》的API我们看到了许多接口和类,我们能够通过这些接口做些什么呢?

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

  1)获得类

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

  i.Stringstr="abc";
  ii.Classc1=str.getClass();

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

  i.Classc1=Class.forName("java.lang.String");
  ii.Classc2=Class.forName("java.awt.Button");

  C.运用.class语法

  i.Classc1=String.class;
  ii.Classc2=java.awt.Button.class;
  iii.Classc4=int.class;
  iv.Classc5=int[].class;

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

  i.Classc1=Boolean.TYPE;

  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 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号