运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下
问题:想调用service类中的私有方法时, Method target=clz.getMethod("say", String.class);用Class的getMethod报错Java.lang.NoSuchMethodException。
解决方案:查了下Class的文档,该类下原来有两个方法:getMethod,
。看了下说明大概的意思就是getDeclaredMethod
getMethod
只能调用public声明的方法,而getDeclaredMethod基本可以调用任何类型声明的方法
调用详细代码:
public class Client5 {
@SuppressWarnings("unused")
private String say(String content){
return "hi,"+content;
}
public String show(String content){
return "hi,"+content;
}
}
public class Client4 {
public static void main(String args[]) throws Exception{
Class<Client5> clz=Client5.class;
Client5 obj=(Client5)clz.newInstance();
Method target=clz.getDeclaredMethod("say", String.class);
target.setAccessible(true);
System.out.println(target.invoke(obj, "I am Caomr"));
}
}
笔记:以后用放射多用
,尽量少用getDeclaredMethod
getMethod
。
最新文章
- gitignore 规范
- 在ubuntu server中安装和配置docker
- 自定义刻度的SeekBar
- DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
- Linux内存管理学习笔记 转
- 导入时如何定制spring-boot依赖项的版本
- 基于Qt的FreeType字体轮廓解析
- 没有main方法真的不能执行代码了吗?
- Java内存管理-一文掌握虚拟机创建对象的秘密(九)
- gym101808 E
- linux 内核是什么?
- Mysql linux -N命令
- 第四节:Linux下如何解决冲突
- Python图表绘制:matplotlib绘图库入门(转)
- 利用 WireShark 深入调试网络请求
- 项目bug
- LeetCode 15 3Sum(3个数求和为0的组合)
- 在CentOS中安装与配置SVN的方法
- 第八章 示例代码(MyBatis)
- 【比赛】HNOI2018 道路