我在这样的类中得到各个字段的名称:
Field[] f = MyClass.class.getDeclaredFields();
Sring str = f[0].toString();
MyClass cl = new MyClass();
现在我想动态地从对象str
访问(公共)字段cl
。我该怎么做?
答案 0 :(得分:12)
使用这样的Field.get
方法(对于第0个字段):
Object x = f[0].get(cl);
要确定str
字段可以执行哪个索引
int strIndex = 0;
while (!f[strIndex].getName().equals("str"))
strIndex++;
以下是一个完整的例子说明:
import java.lang.reflect.Field;
class MyClass {
String f1;
String str;
String f2;
}
class Test {
public static void main(String[] args) throws Exception {
Field[] f = MyClass.class.getDeclaredFields();
MyClass cl = new MyClass();
cl.str = "hello world";
int strIndex = 0;
while (!f[strIndex].getName().equals("str"))
strIndex++;
System.out.println(f[strIndex].get(cl));
}
}
<强>输出:强>
hello world
答案 1 :(得分:4)
Field f = Myclass.class.GetField("Str");
MyClass cl = new MyClass();
cl.Str = "Something";
String value = (String)f.get(cl); //value == "Something"
答案 2 :(得分:0)
应该是这样的:
Field[] f = MyClass.class.getDeclaredFields();
MyClass targetObject = new MyClass();
...
Object fieldValue = f[interestingIndex].get(cl);
注意例外情况。