JAVA反射机制系列二
“Class” object的取得途径
Java允许我们从多种管道为一个class生成对应的Class object,图是一份整理。
|
Class object 诞生管道 |
示例 |
| 运用getClass() 注:每个class 都有此函数 |
String str = "abc"; Class c1 = str.getClass(); |
| 运用 Class.getSuperclass()2 |
Button b = new Button(); Class c1 = b.getClass(); Class c2 = c1.getSuperclass(); |
| 运用static method Class.forName() (最常被使用) |
Class c1 = Class.forName ("java.lang.String"); Class c2 = Class.forName ("java.awt.Button"); Class c3 = Class.forName ("java.util.LinkedList$Entry"); Class c4 = Class.forName ("I"); Class c5 = Class.forName ("[I"); |
| 运用 .class 语法 |
Class c1 = String.class; |
| 运用 primitive wrapper classes 的TYPE 语法 |
Class c1 = Boolean.TYPE; |
Java classes 组成分析
首先容我以图3的java.util.LinkedList为例,将Java class的定义大卸八块,每一块分别对应图4所示的Reflection API。图5则是“获得class各区块信息”的程序示例及执行结果,它们都取自本文示例程序的对应片段。
Java classes 组成分析
首先容我以图3的java.util.LinkedList为例,将Java class的定义大卸八块,
每一块分别对应图4所示的Reflection API。图5则是“获得class各区块信息”的程序示例及执行结果,
它们都取自本文示例程序的对应片段。package java.util; //(1)
import java.lang.*; //(2)
public class LinkedList<E> //(3)(4)(5)
extends AbstractSequentialList<E> //(6)
implements List<E>, Queue<E>,
Cloneable, java.io.Serializable //(7)
...{
private static class Entry<E> ...{ … }//(8)
public LinkedList() ...{ … } //(9)
public LinkedList(Collection<? extends E> c) ...{ … }
public E getFirst() ...{ … } //(10)
public E getLast() ...{ … }
private transient Entry<E> header = …; //(11)
private transient int size = 0;
}
0
相关文章
