当前位置: 首页 > news >正文

java Class类反射getDeclaredMethod() 和 getMethod()的区别

        前几天遇到一个问题,部分业务一直报错java.lang.NoSuchMethodException,可是其它业务都是正常的啊,为什么呢?

        经过排查,获取类使用的方法是getDeclaredMethod,该方法不能获取继承类的方法,改成getMethod后问题解决了。顺便整理一下两者的区别,给自己加深下印象。

        

核心区别对比

特性getMethodgetDeclaredMethod
访问权限仅公有方法所有访问权限(公有、私有、受保护等)
是否包含继承方法
典型应用场景调用公有 API 方法反射调用私有 / 受保护方法(需配合setAccessible(true)

        简单的说就是getMethod获取的是公有方法,包含继承;getDeclaredMethod获取的是该类的所有方法,包含私有方法;但使用私有方法时,需要配合setAccessible(true),不然也会出现java.lang.NoSuchMethodException的报错。

http://www.lryc.cn/news/572232.html

相关文章:

  • Linux中的阻塞信号与信号原理
  • Linux 并发编程:从线程池到单例模式的深度实践
  • 用 STM32 HAL/LL + Arduino 混合编程
  • 硬件-DAY04(ds18b20、ARM内核)
  • Python打卡:Day31
  • 矩阵置零C++
  • Linux:信号和线程
  • 如何在 Pop!_OS 或 Ubuntu Linux 上安装 Dash to Dock
  • 设备巡检系统小程序ThinkPHP+UniApp
  • 中科米堆全自动三维光学测量航空部件尺寸测量分析
  • 虚幻引擎的 Online Subsystem
  • 随记:在springboot中websocket的使用
  • Xsens IMU与NVIDIA Jetson兼容,助您将智能和自主系统更快推向市场
  • 191. 位1的个数
  • SQL注入安全研究
  • FreeRTOS 任务管理学习笔记
  • 从代码学习深度强化学习 - Double DQN PyTorch版
  • 动态规划算法思路详解
  • uni-app总结5-UTS插件开发
  • JavaScript性能优化实战大纲
  • 介绍一款免费MES、开源MES系统、MES源码
  • Rpc - RpcCaller 模块
  • 获取gitlab上项目分支版本(二)
  • 据字典是什么?和数据库、数据仓库有什么关系?
  • 解锁 JavaScript 模块化:ES6 Module 语法深度指南
  • OpenGL——单位向量点乘和叉乘在几何的应用
  • 从C++编程入手设计模式——装饰器模式
  • implement用法
  • 客户催单-01.需求分析和设计
  • 【单片机】51单片机学习笔记