org.springframework.util.ReflectionUtils
程序包中的许多方法已被弃用,但是没有提示应该使用哪些方法来代替。如何正确替换以下方法?
org.springframework.util.ReflectionUtils.makeAccessible();
org.springframework.util.ReflectionUtils.isAccessible();
我的目标是获取所有字段名称并将其保存到Map
中。到目前为止,以下代码可以正常工作,但是如何替换不推荐使用的方法?
ReflectionUtils.doWithFields(object.getClass(), field -> {
if (!field.isAccessible()) ReflectionUtils.makeAccessible(field);
map.put(field.getName(), ReflectionUtils.getField(field, object));
});
答案 0 :(得分:1)
由于模块系统可访问的检查和更改使用了现在的新方法,因此要使某些内容可访问,您应该查看trySetAccessible
:
https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/AccessibleObject.html#trySetAccessible()
它返回true / false值而不是异常。
要检查访问权限,请使用canAccess(object)
:
object-此反射对象的声明类的实例对象(如果它是实例方法或字段)