我在这样的类中得到各个字段的名称:
Field[] f = MyClass.class.getDeclaredFields();
Sring str = f[0].toString();
MyClass cl = new MyClass();
Run Code Online (Sandbox Code Playgroud)
现在我想动态地str从对象访问(公共)字段cl.我怎么做?
aio*_*obe 12
使用这样的Field.get方法(对于第0个字段):
Object x = f[0].get(cl);
Run Code Online (Sandbox Code Playgroud)
要确定该str字段可以使用哪个索引
int strIndex = 0;
while (!f[strIndex].getName().equals("str"))
strIndex++;
Run Code Online (Sandbox Code Playgroud)
这是一个完整的例子来说明它:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
hello world
Run Code Online (Sandbox Code Playgroud)