Java无法访问内部类中的受保护变量

时间:2014-03-16 11:09:13

标签: java oop subclass protected

这是我的代码

class LinkedUserList implements Iterable{
    protected LinkedListElement head = null;    /*Stores the first element of the list */
    private LinkedListElement tail = null;    /*Stores the last element of the list */
    public int size = 0;                      /* Stores the number of items in the list */

//Some methods....
//...

    public Iterator iterator() {
        return new MyIterator();
    }

    public class MyIterator implements Iterator {
        LinkedListElement current;

        public MyIterator(){
            current = this.head; //DOSEN'T WORK!!!
        }

        public boolean hasNext() {
            return current.next != null;
        }

        public User next() {
            current = current.next;
            return current.data;
        }
        public void remove() {
            throw new UnsupportedOperationException("The following linked list does not support removal of items");
        }
    }
private class LinkedListElement {
    //some methods...
    }
}

问题是我有一个名为head的受保护变量,但是当尝试从子类MyIterator访问它时,它不起作用,尽管变量受到保护。

为什么它不起作用,我该怎么做才能修复它????

非常感谢!!!

1 个答案:

答案 0 :(得分:4)

this 始终是指当前对象。因此,在MyIterator内,this引用MyIterator实例,而不是列表。

您需要使用LinkedUserList.this.headhead来访问外部类的head成员。请注意,内部类可以访问其外部类的私有成员,因此head不必是protected。它可以是private