在Java中不使用公共访问器访问私有成员
我遇到了一个挑战,我必须从队列类外部(项目是私有的)获取给定索引下列表项的值。我不允许修改类,也不允许使用反射。有没有可能(在真实的情况下,我宁愿创建公共访问器来获取项目值)
class Queue {
private List<Integer> items;
private Queue() {
items = new ArrayList<Integer>();
}
public static Queue create() {
return new Queue();
}
public void push(int item) {
items.add(item);
}
public int shift() {
return items.remove(0);
}
public boolean isEmpty() {
return items.size() == 0;
}
}
# 1 楼答案
你可以试试这个
# 2 楼答案
以上源代码是队列的基本实现。从你的问题中,我了解到你想要提取给定索引的项。我认为你应该迭代数据以得到更好的索引。如果在找到该索引之前到达数组的末尾,则可以抛出
ArrayIndexOutOfBoundsException
异常下面是一个基本的实现
# 3 楼答案
你可以:
shift
从Queue
中删除所有元素ArrayList
ArrayList
并使用push
以相同的顺序将元素重新添加到Queue
,以便将Queue
恢复到其原始状态李>ArrayList
的第index
个元素李>这是非常低效的,但它解决了你的挑战