代码改变世界

炸鸡

2017-11-28 10:12  菜鸟飞呀飞  阅读(204)  评论(0编辑  收藏  举报

类字节码文件是在硬盘上存储的,是一个个的.class文件。我们在new一个对象时,JVM会先把字节码文件的信息读出来放到内存中,第二次用时,就不用在加载了,而是直接使用之前缓存的这个字节码信息。

 

字节码的信息包括:类名、声明的方法、声明的字段等信息。在Java中“万物皆对象”,这些信息当然也需要封装一个对象,这就是Class类、Method类、Field类。

 

通过Class类、Method类、Field类等等类可以得到这个类型的一些信息,甚至可以不用new关键字就创建一个实例,可以执行一个对象中的方法,设置或获取字段的值,这就是反射技术

/**

    * 加载类的字节码的3种方式

    * @throws Exception

    * */

   public void test1() throws Exception {

      // 方式一

      Class clazz1 = Class.forName("cn.itcast.gz.reflect.Person");

      // 方式二

      Class clazz2 = Person.class;

      // 方式三

      Person p1 = new Person();

      Class clazz3 = p1.getClass();

   }

 

 

换言之,深复制把要复制的对象所引用的对象都复制了一遍。

把对象写到流里的过程是串行化(Serilization)过程,