2012-07-24 68 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