让commons-beanutils支持匿名类的属性

我用的是最新的1.7的commons-beanutils,主要是垂涎它的nest setter
测试代码:
		Object obj=new Object(){
			private String param;
			public String getParam(){
				return param;
			}
			public void setParam(String val){
				param=val;
			}
		};
		BeanUtils.setProperty(obj, "param", "godie");
		assertEquals("godie",BeanUtils.getProperty(obj, "param"));

但是这时候出现了错误,找不到setter或者getter
我找了一下,在
org.apache.commons.beanutils.MethodUtils的getAccessibleMethod(Method method)
里面取class的时候取了DeclaringClass
        // If the declaring class is public, we are done
        Class clazz = method.getDeclaringClass();

将其替换为getClass,再处理一下method的访问权限
        // If the declaring class is public, we are done
        Class clazz = method.getClass();
        if (!method.isAccessible()) method.setAccessible(true);

这样之后测试就通过了。不知道这么弄会不会有什么副作用……

你可能感兴趣的:(apache)