博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 反射机制中 getMethod()和getDeclaredField()区别
阅读量:6709 次
发布时间:2019-06-25

本文共 873 字,大约阅读时间需要 2 分钟。

hot3.png

今天在程序中用到java反射机制时,遇到的问题记录一下:我当时遇到的问题是,我用反射getMethod()调用类方法时,发生 NoSuchMethodException异常,后来上网发现getMethod()调用公共方法,不能反射调用私有方法,后来找到 getDeclaredField()能够访问本类中定义的所有方法。后来用这个方法解决了我遇到的问题。我查了java api文档,其中详细说明如下:

Method getDeclaredMethod(String name, Class… parameterTypes)

          返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
Method[] getDeclaredMethods()
          返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。

Method getMethod(String name, Class… parameterTypes)
          返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
Method[] getMethods()
          返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。

getDeclaredField(String name)
          返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
Field[] getDeclaredFields()
          返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。  

转载于:https://my.oschina.net/u/1446273/blog/201228

你可能感兴趣的文章
正则表达式的简单应用
查看>>
【ubuntu】系统设置打不开
查看>>
抽象工厂模式和autofac的使用总结
查看>>
ManyToMany参数(through,db_constraint)
查看>>
Struts工作原理、流程
查看>>
(转)Entity Framework在三层架构中的使用--MVC三层架构启示
查看>>
【原】记2015招商银行信用卡中心在线笔试------4.2
查看>>
Node Graph ......
查看>>
开放平台-web实现人人网第三方登录
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
如何在遗留代码基础上开发
查看>>
git使用命令, 特别:git checkout -b a 与 git branch a区别(转)
查看>>
vs中附加IIS进程调试
查看>>
Mongodb的安装方法 -- 转自朋友微博
查看>>
作业09-异常
查看>>
UI基础 - UINavigationController
查看>>
C#综合揭秘——细说多线程(下)
查看>>
第十一回 基础才是重中之重~Conditional特性使代码根据条件在debug或者release模式中执行...
查看>>
Attention Model详解
查看>>
Mysql数据库三大范式
查看>>