相关疑难解决方法(0)

Java中是否可以通过反射访问私有字段

在Java中是否可以通过反射访问私有字段str?例如,获取此字段的值.

class Test
{
   private String str;
   public void setStr(String value)
   {
      str = value;
   }
}
Run Code Online (Sandbox Code Playgroud)

java reflection

94
推荐指数
3
解决办法
13万
查看次数

通过反射访问Java中的私有变量

我正在尝试编写一个方法,使用反射在类中获取私有字段.

这是我的课程(本例简化):

public class SomeClass {
    private int myField;

    public SomeClass() {
        myField = 42;
    }

    public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
        Field field = instance.getClass().getDeclaredField(fieldName);
        return field.get(instance);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以说我这样做:

SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
Run Code Online (Sandbox Code Playgroud)

我得到的是IllegalAccessException因为myField是私人的.有没有办法使用反射获取/设置私有变量?(我在C#中完成了,但这是我第一次在Java中尝试过它).如果你想知道为什么需要做这样的疯狂:),这是因为有时在单元测试期间将私有变量设置为失败测试的伪值等是很方便的.

java reflection

28
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×2

reflection ×2