如何在名称为动态且存储在字符串变量中的类中设置或获取字段?
public class Test {
public String a1;
public String a2;
public Test(String key) {
this.key = 'found'; <--- error
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 39
你必须使用反射:
Class.getField()获得Field的参考.如果它不是公开你需要调用Class.getDeclaredField(),而不是AccessibleObject.setAccessible以进入该领域,如果它是不公开Field.set()设置的值,或类似名称的方法之一,如果它是一个原始这是一个处理公共领域的简单案例的例子.如果可能的话,更好的选择是使用属性.
import java.lang.reflect.Field;
class DataObject
{
// I don't like public fields; this is *solely*
// to make it easier to demonstrate
public String foo;
}
public class Test
{
public static void main(String[] args)
// Declaring that a method throws Exception is
// likewise usually a bad idea; consider the
// various failure cases carefully
throws Exception
{
Field field = DataObject.class.getField("foo");
DataObject o = new DataObject();
field.set(o, "new value");
System.out.println(o.foo);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31523 次 |
| 最近记录: |