Java:如何通过存储在变量中的名称访问类的字段?

时间:2010-01-24 13:28:39

标签: java class field

如何在名称为动态且存储在字符串变量中的类中设置或获取字段?

public class Test {

    public String a1;
    public String a2;  

    public Test(String key) {
        this.key = 'found';  <--- error
    } 

}

2 个答案:

答案 0 :(得分:38)

你必须使用反射:

这是一个处理公共领域的简单案例的例子。如果可能的话,更好的选择是使用属性。

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);
    }
}

答案 1 :(得分:1)

DO X=1,Xmax
 Do Y=1,Ymax
  IF(Array(X,Y)>0)THEN
     Array(X,Y)=1
  END IF
 END DO
END DO

上面的代码就足够了。

Class<?> actualClass=actual.getClass();

Field f=actualClass.getDeclaredField("name");

不幸的是,上面的代码对我来说并不起作用,因为该类有空字段数组。