我正在设计一个有两个小部件的应用程序:
- 包含任意对象的列表
- 显示当前选定对象的特定属性的表格
目标是能够从列表中选择一个对象,查看属性,并根据需要修改它们。该列表可以包含各种类型的对象。
所以说列表包含Vehicle
对象和Person
对象
public class Person
{
public String name;
public Integer age;
}
public class Vehicle
{
public String make;
public String model;
}
如果我单击一个Person
对象,表格将显示名称和年龄,我可以为它们分配新值。同样,如果我单击一个Vehicle
对象,它将在表中显示品牌和型号,并允许我对其进行修改。
我考虑过写一个类似的方法
public String[] getFields()
{
return new String[] {"name", "age"};
}
它返回代表我要查看的实例变量的字符串列表,并使用一些反射方法来获取/设置它们。我可以在所有类中定义这个getFields
方法,这样我就可以使用该表来处理可能被扔到列表中的任意对象。
但是有没有办法设计这个,这样我就不用反思了?当前的方法似乎是糟糕的设计。
另一方面,我可以TableModel
为每个可能的类创建多个对象。该表将知道要显示哪些行以及如何访问对象的实例变量。但是每次添加一个新类时,我都必须定义一个新的表模型,这听起来也像是一个弱设计。