Consider the following case:
public class A { public A() { b = new B(); } B b; private class B { } }
From a warning in Eclipse I quot
The access of class B and its constructor do not have to be the same. You can have a private inner class with a package-scope constructor, and this is what I usually do.
class B
public class A { public A() { b = new B(); } B b; private class B { B() { } } }