在Java中访问没有公共访问者的私有成员

时间:2015-11-12 06:20:15

标签: java

我已经接受了挑战,我必须从外部队列类(项目是私有的)获得给定索引的列表项的值。我不允许修改类,也不允许使用Reflection。是否有可能(在实际情况下,我宁愿创建公共访问器来获取项目值)?

@page {
            size: Letter;
            margin: 0in 0.44in 0.2in 0.44in;
    }

3 个答案:

答案 0 :(得分:5)

你可以:

  1. 使用 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:nil message:@"this is first line \nsecondLine should be center" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; [alertView show];
  2. 删除Queue中的所有元素
  3. 将每个已移除的元素添加到您自己的shift
  4. 迭代ArrayList并使用ArrayList以相同的顺序将元素重新添加到Queue,以便将push恢复到原始状态。< / LI>
  5. 返回Queue。{/ li>的index个元素

    它效率很低,但它解决了你的挑战。

答案 1 :(得分:0)

你可以试试这个

public class TestQueue {
public static void main(String[] args){

    Queue q=  Queue.create();
    q.push(10);
    q.push(20);
    q.push(30);
    q.push(40);
    q.push(50);     
        System.out.println(q.shift());      
}}

答案 2 :(得分:0)

以上源代码是Queue的基本实现。根据您的问题,我了解您要提取给定索引的项目。我认为你应该迭代数据以获得更好的索引。如果在找到该索引之前到达数组的末尾,则可以抛出ArrayIndexOutOfBoundsException异常。

这是一个基本实现。

public void dataRetrieve() throws ArrayIndexOutOfBoundsException {
        Queue queue =  Queue.create();
        queue.push(10);
        queue.push(20);
        queue.push(30);
        queue.push(40);
        queue.push(50);

        int indexToRetrieve = 5;

        int index = 0;
        while(!queue.isEmpty()) {
            int value = queue.shift();
            if (index == indexToRetrieve) {
                System.out.println(value);
                return;
            }
            index++;
        }

        throw new ArrayIndexOutOfBoundsException();
    }