问题:想调用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

最新文章

  1. gitignore 规范
  2. 在ubuntu server中安装和配置docker
  3. 自定义刻度的SeekBar
  4. DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
  5. Linux内存管理学习笔记 转
  6. 导入时如何定制spring-boot依赖项的版本
  7. 基于Qt的FreeType字体轮廓解析
  8. 没有main方法真的不能执行代码了吗?
  9. Java内存管理-一文掌握虚拟机创建对象的秘密(九)
  10. gym101808 E
  11. linux 内核是什么?
  12. Mysql linux -N命令
  13. 第四节:Linux下如何解决冲突
  14. Python图表绘制:matplotlib绘图库入门(转)
  15. 利用 WireShark 深入调试网络请求
  16. 项目bug
  17. LeetCode 15 3Sum(3个数求和为0的组合)
  18. 在CentOS中安装与配置SVN的方法
  19. 第八章 示例代码(MyBatis)
  20. 【比赛】HNOI2018 道路

热门文章

  1. 【MySQL】Win7下修改MySQL5.5默认编码格式
  2. iOS学习笔记(4) — UITableView的 重用机制
  3. oss
  4. zabbix 监控zookeeper
  5. Linux微信web开发者工具
  6. tomcat调优配置
  7. U74201 旅行计划 树上找链长度
  8. bzoj4868
  9. codeforces 37 E. Trial for Chief【spfa】
  10. 一个简陋的个人小项目,也是个人第一个真正意义上的独立项目——Graph