我有一个数组列表,我希望普通用户只能从中获取信息,然后我有一个管理员帐户,我希望能够对数组列表执行 SET、SORT 和其他方法。如何与我的管理员帐户和普通用户帐户共享此阵列列表,同时根据用户的身份对用户具有不同的功能。我遇到了适配器类,如果我理解正确,它允许您扩展它,然后只使用您要使用的方法,而不必覆盖其他方法。如果这是正确的,请告诉我。我现在没有任何代码,因为我仍在计划我的项目。
您可以使用 Collections.unmodifiableList() 将列表设为只读
您在问题中没有提供太多细节,但这里有一个它如何工作的示例。 假设你有一个对象,允许你基于UserType
枚举来获取数组:
public List<Object> getMyArray(UserType type) {
if (type == UserType.ADMIN) {
return _myList;
}
else {
return Collections.unmodifiableList(_myList);
}
}
您可以为贫困消费者返回 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);
}
}
你的对象将不再是一个列表,所以它将无法利用像Collections.sort(list)这样的好东西。