这有什么实际的区别吗
public class OuterClass { private class InnerClass { public InnerClass() {} } }
和这个?
public class OuterClass { private class InnerClass { private InnerClass() {} } }
解决方法
从另一个类访问私有成员稍微复杂一点,因为JVM实际上不允许这样做.因此,编译器会注入访问器方法,使其稍慢或堆栈跟踪更复杂.
因为这些原因,我把它当作包裹本地.
BTW抽象类的构造函数也不需要是公共的.它也可以被保护或包装在本地
private static class A { private A() { throw new Error(); } } public static void main(String... ignored) { new A(); }
打印一个额外的堆栈跟踪元素.
Exception in thread "main" java.lang.Error at Main$A.<init>(Main.java:8) at Main$A.<init>(Main.java:6) at Main.main(Main.java:12)
使构造函数包本地化,第二个消息.