什么应该传递给这个方法(Field#get(Object obj))?

hmc*_*ake 3 java oracle reflection field

这里查看Java文档,阅读Oracle教程,以及在SO上访问这个问题之后,我仍然对实际的Object论点感到茫然Field#get(Object obj).

我使用Reflection获取字段的过程是:

Field field = SomeClass.getClass().getDeclaredField("someField");
field.setAccessible(true);
Run Code Online (Sandbox Code Playgroud)

哪个给出了Field对象.现在,要获取该字段的实际值,您将使用该Field#get(Object obj)方法.此方法的文档说明了有关参数的以下内容.

obj - 从中​​提取所表示字段值的对象

我不知道参数的描述甚至意味着什么.有人可以向我解释这个论点真正要求的是什么吗?

谢谢.

JB *_*zet 5

假设你有一个班级Foo:

public class Foo {
    public int bar;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以拥有此类的多个实例:

Foo f1 = new Foo();
f1.bar = 1;
Foo f2 = new Foo();
f2.bar = 2;
Run Code Online (Sandbox Code Playgroud)

要获得字段的值barf1沉思,你会打电话

field.get(f1); // returns 1
Run Code Online (Sandbox Code Playgroud)

要获得字段的值barf2沉思,你会打电话

field.get(f2); // returns 2
Run Code Online (Sandbox Code Playgroud)