3 回答
TA贡献1829条经验 获得超13个赞
您无法通过特定属性识别对象,除非您将其存储在特殊存储库中
您可以创建一个ThingRepository并且可以Things通过 id获取特定信息。
public class ThingRepository {
private Map<Integer, Things> thingsRepository = new HashMap<>();
public void addThing(int id, Things things) {
thingsRepository.put(id, things);
}
public Things getThingById(int id) {
return thingsRepository.get(id); //Can return null if not present
}
}
该addThing方法不需要显式采用id. 如果你添加一个 getter 到Things,那么它可以简化为
public void addThing(Things things) {
thingsRepository.put(things.getId(), things);
}
您需要解决的几个问题:
每个创建的Things对象都必须以某种方式添加到这里(调用者需要添加或者必须有其他一些包装器/工厂必须这样做)。
一旦Things不需要 a ,就必须将其从上面的映射中删除,否则会导致内存泄漏。
顺便说一句,不应该Things只命名为Thing?
TA贡献1828条经验 获得超3个赞
这里有两个方面:
您需要某种数据结构来记住创建的对象,并允许您通过 id 访问它们,例如一个简单的
Map<Integer, Things>
. 每次你创建一个新的Things
(最好被称为Thing
,不是吗?!),你去thatMap.put(newId, newThing)
。如果您希望该数据“幸存”,则必须以某种方式将其持久化(例如将数据写入文件、数据库等)
添加回答
举报