Method not found: setXXX反射无法获得getter和setter方法

  • Post author:
  • Post category:其他




问题描述:

使用PropertyDescriptor类报错

利用反射无法获得属性的getter和setter

	//field:对象的属性对象  clz:pojo的Class对象
	PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clz);
	Method getMethod = pd.getReadMethod();
	Object fieldValue = ReflectionUtils.invokeMethod(getMethod, pojo);

在这里插入图片描述



原因分析:

虽然idea2021内置了Lombok插件,

我使用的是idea2021.1.2,偶然发现一个同事idea2019.3也出现了这个问题,其他的很少出现这个问题,基本排除是idea的问题

无法获得靠@Data注解得来的getter和setter方法,如果手动编写属性的getter和setter代码可以正常运行

出现问题和没有出现问题的机器使用的都是1.8的JDK,不知道是不是JDK小版本差异导致的差异性的问题



解决方案:

1、将要使用反射的类的字段的@Data注解去掉,手动敲(alt+insert可快速getter and setter)

2、将最开始的三行代码改为如下

	field.setAccessible(true);//关闭字段的安全检测
	Object fieldValue = field.get(pojo);//获得指定对象的属性值

这样就避免了对字段的getter的需求,直接拿到字段值



版权声明:本文为weixin_46562226原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。