面向对象语言-反射机制

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

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

    Java是经过Class对象来洞悉类的所有信息,而C#则是经过Type类来洞悉类的所有信息。要想使用反射机制,必需要知道反射机制简单原理,任何一个类,不管是Java或者是C#,本质仍是在运行时对类作了什么处理。简单来讲,这些面向对象语言定义的类,加载到内存都都会生成一个与之对应的Class对象或者Type对象,Class对象和Type对象涵盖这个对象所有信息,因此要想使用反射,咱们必需要获取去到类的这个惟一的对象Class或者Type。
内存

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

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

    Class c2 = com.abaojin.Person.class;
虚拟机

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

    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进行获取,这里就不专门进行讨论,具体能够查看具体的方法。

相关文章
相关标签/搜索