Noob Java问题在这里。我想知道是否有一种标准方法可以为POJO添加额外/外部属性。也就是说,我在我的程序中添加了一个User
对象ArrayList
。此对象将包含与我的数据库中定义的内容相对应的名称,姓氏,地址,电子邮件,电话等内容。
现在说我需要包含外部属性以及所述User
,例如雇主ID,车牌#,智能手机类型。在向我的ArrayList添加User
时,我需要能够包含这些额外的属性 - 是否可以使用Java严格附加这些属性以便我可以访问它们?
我想过要使用像Value Object这样的东西,其中VO将包含所有User
属性以及要从外部类添加的额外字段,但是想要探索更多可能性。有任何想法吗?非常感谢
答案 0 :(得分:1)
你有很多可能性。以下是一些让人想起的东西:
答案 1 :(得分:1)
对您使用的设计产生的一个重大影响是,所有其他值是否都是唯一的,或者User
是否可以拥有多个智能手机,车辆等。
如果所有其他字段都是唯一的,您只需在java.util.Properties
(或其他地图)中滑动即可。您的User
课程至少需要
import java.util.Properties;
class User
{
Properties extra_attr = new Properties();
// ... existing code ...
public void setExtraAttr(String field, String value) {
extra_attr.setProperty(field,value);
}
public String getExtraAttr(String field) {
return extra_attr.getProperty(field);
}
}
然后使用some_user.setExtraAttr("Employer ID","314159");
和some_user.getExtraAttr("Employer ID");
等来设置和获取额外属性。
如果您需要多重性,则可能需要采用不同的方法,或者只需对Properties
的实施进行编码即可。例如,您可以重写setExtraAttr()
以查找现有密钥并添加索引
public void setExtraAttr(String field, String value) {
if(extra_attr.getProperty(field) == null)
extra_attr.setProperty(field,value);
else {
int index = 1;
while(extra_attr.getProperty(field+index) != null)
index++;
extra_attr.setProperty(field+index,value);
}
}
然后你需要某种循环来获取寻找和处理多个额外记录的属性。