在下图中,Eclipse 显示我的“root”变量有一个名为“localSymbolTable”的嵌套变量,它还有另一个名为“data”的嵌套变量。
由于这些变量是私有(private)的,我无法直接访问它们。由于其他原因,访问它们的方法向我抛出了 NullPointerException。我确实需要读取“data”变量的值,就像 Eclipse 在 Debug模式下所做的那样。有没有办法进行此编码。如果是这样,我该怎么做?
我真的很感谢任何帮助。
最佳答案
Java 中的反射允许您做到这一点。 检查 here 中的示例
在您的情况下,代码将类似于:
Field dataField = root.getLocalSymbolTable().getClass().getDeclaredField("data");
dataField.setAccessible(true);
Object dataFieldValue = dataField.get(root.getLocalSymbolTable());
当然,字段是私有(private)的是有原因的,请参阅其他评论等等。
关于java - 有没有像eclipse那样读取私有(private)变量的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978401/