我应该使用适配器类来共享我的arraylist吗?

时间:2013-10-30 01:41:53

标签: java android

我有一个arraylist,我希望普通用户只能从中获取信息,然后我有一个管理员帐户,我希望能够为arraylist做SET,SORT和其他方法。如何与管理员帐户和普通用户帐户共享此阵列列表,同时根据用户身份为用户提供不同的功能。我遇到了适配器类,如果我理解正确,允许你扩展它,然后只使用你想要使用的方法,而不必覆盖其他方法。如果这是正确的,请告诉我。我现在没有任何代码,因为我还在计划我的项目。

2 个答案:

答案 0 :(得分:0)

您可以为弱势消费者返回Collections.unmodifiableList()

或者,如果您想要真正限制并且只公开某些ArrayList方法,那么您可以考虑创建自己的类,其中包含ArrayList。您可以使用要向特权使用者公开的额外方法进一步将其子类化。

这样的事情:

public class MyList<T> {
  ArrayList<T> arrayList;
  public T get(int index) {
    return arrayList.get(index);
  }
}

public class MyModifiableList extends MyList<T> {
  public boolean add(T object) {
    return arrayList.add(object);
  }
}

您的对象将不再是List,因此无法利用Collections.sort(list)等优点。

答案 1 :(得分:0)

您可以使用Collections.unmodifiableList()

进行只读列表

你没有在你的问题中提供太多细节,但这里有一个如何运作的例子。假设您有一个对象,允许您根据UserType枚举来获取数组:

public List<Object> getMyArray(UserType type) {

    if (type == UserType.ADMIN) {
        return _myList;
    }
    else {
        return Collections.unmodifiableList(_myList);
    }
}