field1/2/3 是句柄
得装到集合中才可以这样取

解决方案 »

  1.   

    String field1="hangzhou";
    String field2="ningbo";
    String field3="jinghua";

    public void print() {
    for(int i=1;i<=3;i++){
    try {
    Field field = this.getClass().getDeclaredField("field"+i);
    System.out.println(field.get(this));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  2.   

    楼上正解,完整点儿写就是:
    import java.lang.reflect.Field;
    public class Test{

    String field1="hangzhou";
    String field2="ningbo";
    String field3="jinghua";

    public static void main(String[] args){

    Test test = new Test();
    test.print();

    }

    public void print(){
    for(int i=1;i<=3;i++){
    try {
    Field field = this.getClass().getDeclaredField("field"+i);
    System.out.println(field.get(this));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    }
      

  3.   

    同意楼上,基本就这样了,考虑开始可能不知道会有多少field,(也不必知道)可做如下修改:public void print()
    {
        try
        {
            Field[] fields = this.getClass().getDeclaredFields();        if (fields != null && fields.length > 0)
            {
                for (Field f : fields)
                {
                    System.out.println(f.getName() + ":" + f.get(this));
                }
            }
        }
        catch (SecurityException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IllegalArgumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
      

  4.   

    同意楼上,基本就这样了,考虑开始可能不知道会有多少field,(也不必知道)
    很好, 但是 for (Field f : fields)
    好象要转换以下jre版本