反射(Reflection)
  java中无论某一个类生成多少个对象,这些对象都会对应于同一个Class对象()一个类,对应于一个Class 对象。
  1.发射的4个基本功能:
  1.在运行时判断任意一个对象所属的类。
  2.在运行时构造任意一个类的对象。
  3.在运行时判断任意一个类所具有的成员变量。
  4.在运行时调用任意一个对象的方法。
  2.实现反射的类主要有5个:
  1.Class 类                             代表一个类,存在于java.lang 包中
  2.Field 类                               代表类的成员变量(也称属性),java.lang.reflect
  3.Method 类                           代表类的方法
  4.Constructor 类                   代表类的构造方法
  5.Array 类                               提供了动态创建数组,以及访问数组元素的静态方法
  * Class 代表一类什么样的事物?
  * 任何类型都可以用一个Class来表示,任何类型在内存中都是一份字节码。
  *
  * 如何给Class 赋值?
  * Class cls1=Person.class; 代表Person 那个类的字节码。
  * Class cls2=Date.class; 代表Date 那个类的字节码。
  * 有两种返回方式,
  * 第一种是该份字节码被加载过,java虚拟机里直接返回即可,
  * 第二种是Java虚拟机还没有该字节码,则用类加载器去加载,把加载进来的字节码缓存在虚拟机里,以后要得到该字节码不用在加载了
  *
  * 得到字节码的方式有三种,使用平率都很高
  * 1.类名.class  固定的写法,
  * 2.对象.getClass();
  * 3.Class.forName("类名");  反射主要使用Class.forName("java.lang.string"); 因为在写源程序的时候还不知道类的名字