繁体   English   中英

我应该使用适配器类来共享我的数组列表吗?

[英]Should I use an adapter class to share my arraylist?

我有一个arraylist,我希望普通用户只能从该列表中获取信息,然后我有一个管理员帐户,我希望能够对该数组列表执行SET,SORT和其他方法。 如何与管理员帐户和普通用户帐户共享此阵列列表,同时根据用户的身份对用户具有不同的功能。 我碰到了适配器类,如果我理解正确的话,您可以对其进行扩展,然后仅使用您要使用的方法,而不必覆盖其他方法。 请让我知道这是否正确。 我现在没有任何代码,因为我仍在计划项目。

您可以为弱势消费者返回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)之类的好东西。

您可以使用Collections.unmodifiableList()将列表设为只读

您在问题中没有提供太多细节,但是这里有一个示例说明它如何工作。 假设您有一个对象,该对象可让您基于UserType枚举获取数组:

public List<Object> getMyArray(UserType type) {

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM