Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应该向这个方法传递什么(字段#get(objectobj))?_Java_Oracle_Reflection_Field - Fatal编程技术网

Java 应该向这个方法传递什么(字段#get(objectobj))?

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—

在阅读了Java文档、阅读了一篇文章以及访问之后,对于
字段#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!更清楚了。谢谢,这很有道理。