是否可以使用反射更改类的属性值.
以下是我的班级: -
public class LoggerManager {
private static LoggerManager _instance = new LoggerManager();
private LoggerManager() {
}
public static LoggerManager getInstance() {
return _instance;
}
public Logger getLogger(String FQCN) {
Logger logger = Logger.getLogger(FQCN);
logger.setLevel(Level.INFO);
return logger;
}
}
Run Code Online (Sandbox Code Playgroud)
我想_instance用反射改变变量的值..
基本上我想改变相同的值_instance = new NewLoggerManager();,
提供的 NewLoggerManager extends LoggerManager
是否有可能这样做,因为我知道如何调用方法,但如何做到这一点.. ???
Field field = LoggerManager.class.getDeclaredField("_instance");
field.setAccessible(true);
field.set(null, new NewLoggerManager());
Run Code Online (Sandbox Code Playgroud)
Field该_instance字段的定义.使用"声明"方法,因为它也能够获得私有字段null作为目标对象传递,因为该字段是static