Java 使用字符串值中的许多变量初始化对象

Java 使用字符串值中的许多变量初始化对象,java,excel,constructor,Java,Excel,Constructor,我是makung公司的一个Web应用程序,您可以上传一个Excel文件,并将其中一张表转换为JSON文本。为此,我使用一个类,其中每个对象表示所述工作表中的一行,其中对象的每个变量是一列。这是一个包含很多列的大型Excel文件,因此有很多变量 public class MetaDataRow { private String deleted = ""; private String bo_name = ""; private String typeKey

我是makung公司的一个Web应用程序,您可以上传一个Excel文件,并将其中一张表转换为JSON文本。为此,我使用一个类,其中每个对象表示所述工作表中的一行,其中对象的每个变量是一列。这是一个包含很多列的大型Excel文件,因此有很多变量

public class MetaDataRow {

private String deleted = "";
private String bo_name = "";
private String typeKey = "";
private String category = "";
private String descriptor = "";
private String group_name = "";
private boolean Zusatzobjekt = false;
private String group_layout = "";
private boolean collapsed = false;
private boolean visibleInCreationMode = true;
private int group_gridSize = 12;
private int groupPosition = 1;
private int maxCount = 1;
private String fachID = "";
private String name = "";
private String attributeName = "";
private String format = "";
private String fieldType = "";
private String dependentField = "";
private String controllLogicOfDependentField = "";
private String dependentValidationFormat = "";
private String length = "";
private String rangeMin = "";
private String rangeMax = "";
private String dateRangeMin = "";
private String possibleValues = "";
private String werteliste = "";
private String defualtValue = "";
private String fachbereiche = "";
private boolean visible = true;
private boolean editable = true;
private boolean pflichtfeld = true;
private boolean genehmigungspflichtig = true;
private String tooltip = "";
private boolean filterAttribute = true;
private boolean showInSearchResults = true;
private int position = 1;
问题是Excel文件在工作表中的列顺序并不总是相同的,因此我必须读取列的名称并逐个初始化字段。 这样做的有效方法是什么?是否有可能制作某种“通用设置器”,您可以根据字符串选择要设置的变量,例如

public void setter(String fieldName,Object content){名为fieldName=content的变量;}


如果这不起作用,你有什么建议?

用我找到的通用Setter解决

        private void callSetter(Object obj, String fieldName, Object value){
          PropertyDescriptor pd;
          try {
           pd = new PropertyDescriptor(fieldName, obj.getClass());
           pd.getWriteMethod().invoke(obj, value);
          } catch (IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
         }

“读取列的名称”是否意味着,例如,第一个Excel行包含列名?这些列名是否与JSON字段名相同?是的,这是正确的。