技术开发 频道

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;
    Class c2 = java.awt.Button.class;
    Class c3 = Main.InnerClass.class;
    Class c4 = int.class;
    Class c5 = int[].class;

    运用
    primitive wrapper classes 的TYPE 语法

    Class c1 = Boolean.TYPE;
    Class c2 = Byte.TYPE;
    Class c3 = Character.TYPE;
    Class c4 = Short.TYPE;
    Class c5 = Integer.TYPE;
    Class c6 = Long.TYPE;
    Class c7 = Float.TYPE;
    Class c8 = Double.TYPE;
    Class c9 = Void.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
相关文章