面向对象语言-反射机制

谁都会走 提交于 2019-12-14 21:38:48

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Java和C#是目前面向对象语言的代表性语言,Java语言是面向语言是代表。

    今天主要就这两个面向对象语言的反射机制讨论一番, 其实要想了解反射本质,必须要深入的了解Java虚拟机和C#的运行时机制。要深入了解这些语言运行时具体机制和流程,日后会转本出一篇博客商讨,今天这里只是讨论使用反射的基本使用流程,以及反射基本原理。

    Java是通过Class对象来洞悉类的全部信息,而C#则是通过Type类来洞悉类的全部信息。要想使用反射机制,必须要知道反射机制简单原理,任何一个类,无论是Java或者是C#,本质还是在运行时对类做了什么处理。简单来说,这些面向对象语言定义的类,加载到内存都都会生成一个与之对应的Class对象或者Type对象,Class对象和Type对象涵盖这个对象全部信息,所以要想使用反射,我们必须要获取去到类的这个唯一的对象Class或者Type。

    Java要想获取一个类Class对象,加入有com.abaojin.Person类:

    Class c1 = Class.forName("com.abaojin.Person");

    Class c2 = com.abaojin.Person.class;

    Class c3 = (new com.abaojin.Person()).getClass();

    C#要想获取一个类的Type对象,同样有com.abaojin.Person类:

    Type t1 = Type.GetType("com.abaojin.Person");

    Type t2 = typeof(com.abaojin.Person);

    Type t3 = (new com.abaojin.Person()).GetType();


    上面也说过,Java的Class对象和C#的Type对象,可以洞悉一个类的全部信息,也就是说可以获取这个类的变量,方法,无论是共有变量和是私有变量,都由Class或Type提供API进行获取,这里就不专门进行讨论,具体可以查看具体的方法。














易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!