private void modifySrvmgrCallerKeyLocked() {
try {
//更改私有变量值
SrvmgrCaller pt = new SrvmgrCaller();
Class<?> srvmgrCallerClazz = SrvmgrCaller.class;
// 获得指定类的属性
Field field = srvmgrCallerClazz.getDeclaredField("initKeyLocked");
// 值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
// 更改私有静态属性的值 设置为false 防止SrvmgrCaller.initCallerKeyByValue下在if (!initKeyLocked.getAndSet(true))代码段判断过不去
field.set(pt, new AtomicBoolean(false));
} catch (Exception e) {
log.error("modifySrvmgrCallerKeyLocked happens exception,excetpionMsg:{}", e.getMessage());
}
}
修改对象的私有静态成员变量属性值
猜你喜欢
转载自blog.csdn.net/CoderTnT/article/details/118095113
今日推荐
周排行