java新手入门:Java反射机制(二)

文章作者 100test 发表时间 2007:03:14 16:49:11
来源 100Test.Com百考试题网


Java classes 组成分析
首先容我以图3的java.util.LinkedList为例,将Java class的定义大卸八块,每一块分别对应图4所示的Reflection API。图5则是“获得class各区块信息”的程序示例及执行结果,它们都取自本文示例程序的对应片段。

package java.util. //(1)
import java.lang.*. //(2)
public class LinkedList //(3)(4)(5)
extends AbstractSequentialList //(6)
implements List, Queue,
Cloneable, java.io.Serializable //(7)
{
private static class Entry { … }//(8)
public LinkedList() { … } //(9)
public LinkedList(Collection c) { … }
public E getFirst() { … } //(10)
public E getLast() { … }
private transient Entry header = …. //(11)
private transient int size = 0.
}
图3:将一个Java class 大卸八块,每块相应于一个或一组Reflection APIs(图4)。

Java classes 各成份所对应的Reflection APIs
图3的各个Java class成份,分别对应于图4的Reflection API,其中出现的Package、Method、Constructor、Field等等classes,都定义于java.lang.reflect。
Java class 内部模块(参见图3) Java class 内部模块说明 相应之Reflection API,多半为Class methods。 返回值类型(return type)
(1) package class隶属哪个package getPackage() Package
(2) import class导入哪些classes 无直接对应之API。
解决办法见图5-2。
(3) modifier class(或methods, fields)的属性
int getModifiers()
Modifier.toString(int)
Modifier.isInterface(int) int
String
bool
(4) class name or interface name class/interface 名称getName() String
(5) type parameters 参数化类型的名称 getTypeParameters() TypeVariable []
(6) base class base class(只可能一个) getSuperClass() Class
(7) implemented interfaces 实现有哪些interfaces getInterfaces() Class[]

(8) inner classes 内部classes getDeclaredClasses() Class[]
(8) outer class 如果我们观察的class 本身是inner classes,那么相对它就会有个outer class。 getDeclaringClass() Class
(9) constructors 构造函数getDeclaredConstructors() 不论 public 或private 或其它access level,皆可获得。另有功能近似之取得函数。 Constructor[]
(10) methods 操作函数getDeclaredMethods() 不论 public 或private 或其它access level,皆可获得。另有功能近似之取得函数。 Method[]
(11) fields 字段(成员变量) getDeclaredFields()不论 public 或private 或其它access level,皆可获得。另有功能近似之取得函数。 Field[]
图4:Java class大卸八块后(如图3),每一块所对应的Reflection API。本表并非
Reflection APIs 的全部。

相关文章


基础入门:JAVA初学的一些技巧
在Java中动态执行类的静态方法
java新手入门:Java反射机制(三)
java新手入门:Java反射机制(二)
java新手入门:Java反射机制(四)
Java1.5新特性Enum列举的用法(四)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛