【问题标题】:Looping javaBean attributes循环 javaBean 属性
【发布时间】:2015-07-14 15:08:13
【问题描述】:

我有一个 java bean

public class Bean {

private Object field1;
private Object field2;

public Object getField1() {
    return field1;
}

public void setField1(Object field1) {
    this.field1 = field1;
}

public Object getField2() {
    return field2;
}

public void setField2(Object field2) {
    this.field2 = field2;
}
}

我想设置字段,所以我正在做这个硬编码

Bean c1 = new Bean();

c1.setField1(hmap.get(headers[1]));
c1.setField2(hmap.get(headers[2]));

我想用一个循环来执行此操作,因为我有 17 个字段。

for (count = 1; count < headers.length; count++) {
c1.setField1,2,3...("Parameter_" + count, messages.getString("field." + headers[count]));}

我该如何实现呢?使用 JDK 16

【问题讨论】:

  • 由于您的字段数不固定,我建议使用单个字段 Map&lt;String,Object&gt; ,其中 key 将是您的标题名称,而不是每个标题都有单独的字段
  • 您使用的是什么版本的 Java?始终在您的问题中指定,因为这会影响可用的答案。

标签: java loops attributes iteration javabeans


【解决方案1】:

使用Reflection,如下:

    Bean c1 = new Bean();

    c1.setField1("Object 1");
    c1.setField2("Object 2");

    for (int count = 1; count < headers.length; count++) 
    {
        //concatenate to get method name
        String methodName = "getField" + count;

        // using reflection, get collection of all methods in Bean class
        Method[] methods = Bean.class.getMethods();

        for(Method method : methods)
        {
            if (method.getName().equals(methodName))
            {
                // if it's the method you want, invoke it using 
                // the required params
                method.invoke("Parameter_" + count, messages.getString("field." + headers[count]));
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2012-12-17
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多