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)
。如果您希望該數據“幸存”,則必須以某種方式將其持久化(例如將數據寫入文件、數據庫等)
添加回答
舉報