小编典典

为什么用Java将私有内部类成员公开?

java

如果仍然无法在包含类的外部访问它,则用Java声明一个私有内部类的成员的原因是什么?可以吗

public class DataStructure {
    // ...

    private class InnerEvenIterator {
        // ...

        public boolean hasNext() { // Why public?
            // ...
        }
    }
}

阅读 219

收藏
2020-09-24

共1个答案

小编典典

如果InnerEvenIterator该类没有扩展任何类或实现任何接口,那么我认为这是无稽之谈,因为没有其他类可以访问它的任何实例。

但是,如果它扩展或实现了任何其他非私有类或接口,则是有意义的。一个例子:

interface EvenIterator {
    public boolean hasNext();
}


public class DataStructure {
    // ...

    private class InnerEvenIterator implements EvenIterator{
        // ...

        public boolean hasNext() { // Why public?
            // ...
        }
    }

    InnerEvenIterator iterator;

    public EvenIterator getIterator(){
         return iterator;
    }

}
2020-09-24