Java 应该向这个方法传递什么(字段#get(objectobj))?
在阅读了Java文档、阅读了一篇文章以及访问之后,对于Java 应该向这个方法传递什么(字段#get(objectobj))?,java,oracle,reflection,field,Java,Oracle,Reflection,Field,在阅读了Java文档、阅读了一篇文章以及访问之后,对于字段#get(objectobj)中的Object参数实际上是什么,我仍然目瞪口呆 我使用反射获取字段的过程是: Field field = SomeClass.getClass().getDeclaredField("someField"); field.setAccessible(true); 它给出了字段对象。现在,要获得字段的实际值,可以使用field#get(objectobj)方法。此方法的文档说明了以下有关参数的信息 obj—
字段#get(objectobj)
中的Object
参数实际上是什么,我仍然目瞪口呆
我使用反射获取字段的过程是:
Field field = SomeClass.getClass().getDeclaredField("someField");
field.setAccessible(true);
它给出了字段
对象。现在,要获得字段的实际值,可以使用field#get(objectobj)
方法。此方法的文档说明了以下有关参数的信息
obj—要从中提取所表示字段值的对象
我甚至不知道参数的描述意味着什么。有人能给我解释一下这场争论的真正目的吗
谢谢。假设你有一门课
Foo
:
public class Foo {
public int bar;
}
现在您可以拥有该类的多个实例:
Foo f1 = new Foo();
f1.bar = 1;
Foo f2 = new Foo();
f2.bar = 2;
要以反射方式获取f1
的bar
字段的值,可以调用
field.get(f1); // returns 1
field.get(f2); // returns 2
要以反射方式获取f2
的bar
字段的值,可以调用
field.get(f1); // returns 1
field.get(f2); // returns 2
尝试运行以下代码:
import java.lang.reflect.Field;
public class TestReflect
{
private int value;
public static void main ( String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException
{
Field field = TestReflect.class.getDeclaredField("value");
TestReflect objRed = new TestReflect();
TestReflect objBlue = new TestReflect();
objRed.value = 1;
objBlue.value = 2;
System.out.println( field.get(objRed) );
System.out.println( field.get(objBlue) );
}
}
您将获得以下输出:
1
2
在那里,
字段
变量引用了类TestReflect
中的变量值
。但是value
是一个变量,因此类TestReflect
的每个对象都有自己的value
变量。要获取值
变量,您需要指定从哪个对象获取它,这就是参数的用途。Ah!更清楚了。谢谢,这很有道理。