亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中如何使用對象的類變量來識別對象?

java中如何使用對象的類變量來識別對象?

一只名叫tom的貓 2021-05-31 17:10:22
我創建了一個類并從中制作了 57 個對象,每個對象都有特定的 ID 號。我可以創建一個使用 ID 作為參數返回對象的方法嗎?例如,假設我的類的名稱是Things,我從中創建了兩個名為appleand 的對象dog,它們具有 ID1和2。Things.java:class Things {    private String name;    private int ID;    public Things(String name, int ID) {        this.name = name;        this.ID = ID;    }}Main.java:class Main {    public static void main(String[] args) {        Things apple = new Things("apple", 1);        Things dog = new Things("dog", 2);    }}在這個例子中,我想在類“Things”中創建一個方法,如果我使用 1 作為參數,則返回對象 apple ,如果使用 2 則返回對象 dog 。
查看完整描述

3 回答

?
烙印99

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?


查看完整回答
反對 回復 2021-06-02
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這里有兩個方面:

  • 您需要某種數據結構來記住創建的對象,并允許您通過 id 訪問它們,例如一個簡單的Map<Integer, Things>. 每次你創建一個新的Things(最好被稱為Thing,不是嗎?!),你去thatMap.put(newId, newThing)。

  • 如果您希望該數據“幸存”,則必須以某種方式將其持久化(例如將數據寫入文件、數據庫等)


查看完整回答
反對 回復 2021-06-02
  • 3 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號