java的反射Reflect机制之Method篇

                       最近刚刚开始接触java的反射API,然后使用对j2EE或j2ME中许多框架的设计中有了一个大概的实现途径。现就自己学习到的知识做一个归纳。以后自己也会继续写java Reflect 机制的文章。

         Reflect更改介绍:我们可以将java中的各种各样的部分看成是一个一个的对象---也就将类(class)中的各种各种的成分(例如,方法、属性、构造函数、描述符)映射成一个一个的类(Class)。

        重要的类:

     Method   指类中的方法对象

     Field       指类中的属性对象

     constructor  指类中的构造函数对象

     modifier    指类中的修饰符对象

     Class        指某个类的字节码文件对象-----注意,我个人理解,一个类的字节码文件在内存中只有一份,不会有多余的一份。之所以有很多这个类的对象,那是因为JVM用这个字节码文件创建了多个相对应的对象。如下的代码,就能验证这个说法:其输出结果就是true。虽然是不同的对象,但是这两个对象对应的字节码文件是相同的。也就是说都是指向同一个字节码文件对象。总结:我们可以把这个Class对象看作是一个字节码文件对象,在JVM中的只有一份字节码文件对象,不会出现重名的字节码文件,因为java语言的包机制是不允许的,字节码文件是以类全名存于JVM中的。

    Method类中的重要的方法简介及其需要主要的点儿:

   1、得到一个method对象的方法:oneclassobj.getDeclaredMethod(methodname,methodparaType)  (注意:methodname值是必须指定的,methodParaType可以为null,因为某些方法是不需要参数的。如果methodparatype为null的话,那么在调用这个方法的时候一定不要再为这个方法添加参数,否则就回报错。)

   1、invoke(majorobj,values)   majorobj:方法所属的对象,也可以为null(当这个方法是static类型的时候,因为static方法是不属于某个对象的,是属于类的)。

   

 

     在编程的过程中要注意的几点:

  1、从某个类文件中得到什么样的方法(参数的类型,参数的个数),那么在调用(invoke方法)这个方法的时候也要注意参数类型、参数个数的匹配。

2、当方法有多个参数,参数的传递是个难点。当没有参数时,调用方法时就不用指定参数类型(设置为null),。总结如下,我们可以通过代码展示

客户端代码:

业务代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值