面向对象语言-反射机制

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














转载于:https://my.oschina.net/uabao/blog/547840

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值