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));
});
由于模块系统可访问的检查和更改现在使用新方法,要使某些内容可访问,您应该查看trySetAccessible
:
https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/AccessibleObject.html#trySetAccessible((
它返回真/假值而不是异常。
并检查访问使用canAccess(object)
:
object - 此反射对象的声明类的实例对象,如果它是实例方法或字段
https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/AccessibleObject.html#canAccess(java.lang.Object(