java包装类对象存储在哪,java – 使用围绕存储在XML中的对象的无类型包装类,这是不是很糟糕?...

class MyThing {

protected HashMap fields;

protected MyThing(HashMap newFields){

fields.putAll(newFields);

}

protected Object get(String key){

return fields.get(key);

}

}

现在有点背景.我使用这个类作为一个超类来代表一堆不同的类,它们代表XML文件中的对象.这基本上是API包装器的实现,我将其用作API中的解析XML和数据库之间的适配器.转换被委托给get方法的调用者.如果子类在创建时或者返回变量时需要执行某些操作,则只需调用super,然后操作之后返回的内容.例如.:

class Event extends MyThing {

public Event(HashMap newFields){

super(newFields);

// Removes anything after an @ symbol in returned data

Pattern p = Pattern.compile("\\@.*$");

Matcher m = p.matcher((String)fields.get("id"));

boolean result = m.find();

if (result)

fields.put("id", m.replaceFirst(""));

}

}

public Object get(String key){

Object obj = super(key);

if (key.equals("name")){

return "Mr./Mrs. " + ((String)obj);

}

}

}

我觉得我应该这样做的原因是因为它们具有不同的属性,所以我不必为每个子类编写getId,getName,getWhatever方法.它可以节省时间,而且非常自我解释.

现在这显然是“unJavalike”,而且更像是一种半语言的做事方式,但是有理由说我绝对不应该这样做吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值