相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

通过反射访问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万
查看次数