如何在Java中动态填充类的字段

mac*_*ers 0 java

我知道以下不是一个好的设计,但这是我需要解决的问题

public final class TestBean {

    private String field1;
    private String field2;
    private String field3;

    public String getField1() {
        return field1;
    }
    public void setField1(String field1) {
        this.field1 = field1;
    }
    public String getField2() {
        return field2;
    }
    public void setField2(String field2) {
        this.field2 = field2;
    }
    public String getField3() {
        return field3;
    }
    public void setField3(String field3) {
        this.field3 = field3;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且需要动态填充类中的字段.

假设我有一个数组{"abc","def"},该类应该以field1 ="abc",field2 ="def"和field3 =""开始; 如果数组是{"a"}并且field1 ="a",则field2 ="",field3 ="".

是否有可能实现这一目标?


更新:显然我没有说好问题.实际上,该字段不仅仅是三个,它是从字段1,字段2到字段15.然后它不仅仅是一个字段,还有另一个字段调用,例如名称,从名称1到名称15:

public final class TestBean {

    private String field1;
    private String field2;
    ...
    private String field15;

    private String name1;
    private String name2;
    ...
    private String name15;

}
Run Code Online (Sandbox Code Playgroud)

Abs*_*ind 5

您可以使用varargs来实现此目的:

public TestBean(String... args) {
    field1 = "";
    field2 = "";
    field3 = "";

    if (args.length >= 1) field1 = args[0];
    if (args.length >= 2) field2 = args[1];
    if (args.length >= 3) field3 = args[2];
}
Run Code Online (Sandbox Code Playgroud)

并以这种方式初始化您的对象:

new TestBean("abc", "foo");

String[] array = new String[]{"abc", "foo"};
new TestBean(array); // or this way if the array already exists
Run Code Online (Sandbox Code Playgroud)