我对Java的java.lang.Class这个类的深入理解

 

类是对同一类事物的描述,字段具体的值只有到类实例化时才会指定,静态字段除外。
所有的类也是同一类事物,用Class这个类来描述。Class类与String、Person等类
是同一个级别的。
java的字节码文件被加载到方法区中后,会在堆中实例化一个java.lang.Class类的对象,
这个对象封装了方法区内的数据结构,并向程序员提供了访问方法区内的数据结构的接口

反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类用一个Class类
的对象来表示,一个类中的组成部分:成员字段,方法,构造方法,包等等信息也用一个个
的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示
Java类的Class类显示要提供一系列的方法,来获得其中的字段,方法,构造方法,修饰符,
包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、
Package等等。

模拟Class类的定义:

public class Class
{
  private Package package;
  private Modifiers[] modifiers;
  private Class superClass;
  private Class[] interfaces;
  private Field[] fields;
  private Method[] methods;

  //getter 和 setter
}

在java的Class类的源代码中没有定义上述的各种字段,只提供了getter和setter方法。因为Class类封装了他要描述的类的
已经加载到内存中的字节码流,通过这个流可以获得上述的各种字段信息。

posted on 2013-12-20 22:03  尺规方圆  阅读(2308)  评论(2编辑  收藏  举报

导航