1 回答
TA贡献1810条经验 获得超4个赞
我想出的最好方法涉及一些重新排列。它只对自定义类自动工作,但它允许在初始化后进行一些自定义。
首先,为要实现的自定义类编写一个公共接口,允许它们定义自定义控件列表:
public interface FormLayout {
List<Input> getLayout();
}
然后,在构造函数中,不是初始化字段列表,而是检查对象是否定义了自己的布局:
public Form (Object objRef) {
Field[] fields = objRef.getClass().getFields();
if(objRef instanceof Form.FormLayout) {
inputs = ((FormLayout) objRef).getLayout();
}
else {
inputs = new ArrayList<>();
for (int i = 0; i < fields.length; i++) {
inputs.add(new Input(fields[i].getName(), FormInputs.get(fields[i].getType())));
}
}
}
现在您有一个定义的输入列表,可以在构建表单之前对其进行操作,并且能够为类定义自定义布局。
需要做进一步的工作来处理将输入与字段相关联,以便用户输入实际进入正确的变量,但这似乎是最合理的方法。
添加回答
举报