2012-07-24 65 views
0

如果一個類有一個集合數據結構,可能是一個hashmap等,在類中使用.get(id)來訪問集合,或者你應該寫一個調用hashmap.get(id)的方法嗎?類的集合的自定義getters?

我不確定吸氣劑是否更多用於外部請求的公共訪問?

+0

你能舉出一個你想到的兩種方式的例子嗎? – 2012-07-24 21:27:51

+0

一個類,有一個私有/受保護的hashmap ....可以直接調用hashmap的.get()或者你應該創建一個getter ....? – user997112 2012-07-24 21:28:22

回答

4

翻轉的問題:爲什麼不會你直接使用hashmap?

最終,答案取決於你實際在做什麼。沒有理由編寫一個方法來獲取裏面的散列值,除非你真的需要做別的事情而不是簡單地訪問散列值。你的班級是地圖的擁有者–有你的方式。

如果您將暴露地圖給您的班級的用戶,答案可能會有所不同。

+0

酷,它只是爲了內部同類的使用 – user997112 2012-07-24 21:28:53

1

根據你想要做什麼,任何一個都是可以接受的 - 我認爲創建訪問器的最佳理由是它可以用來維護不變量 - 無論是來自課堂還是外部 - 但是如果你不需要那個,直接使用它。

-1

如果客戶認爲合適,我會返回整個集合以供客戶使用。

package misc; 

import java.util.ArrayList; 
import java.util.List; 

public class Misx { 
    private List<String> list = new ArrayList<String>(); 

    public List<String> getList() { 
     return list; 
    } 

    public void setList(List<String> list) { 
     this.list = list; 
    } 
} 
+1

這種方法的問題是,如果你的'Misx'類做了那個'List'並且需要在List被修改時被通知(例如添加了一個元素)。 Java集合都不會觸發事件,所以您會要求此類的用戶在修改它時始終替換列表。如果你不提供對'List'的直接訪問,你可以避免這個問題 – Robin 2012-07-24 22:00:18