Java 使用字符串值中的许多变量初始化对象
我是makung公司的一个Web应用程序,您可以上传一个Excel文件,并将其中一张表转换为JSON文本。为此,我使用一个类,其中每个对象表示所述工作表中的一行,其中对象的每个变量是一列。这是一个包含很多列的大型Excel文件,因此有很多变量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
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字段名相同?是的,这是正确的。