Java – should the constructor of a private inner class be declared public or private?

Is there any practical difference

public class OuterClass {
    private class InnerClass {
        public InnerClass() {}
    }
}

And this?

public class OuterClass {
    private class InnerClass {
        private InnerClass() {}
    }
}

Solution

Accessing private members from another class is a little more complicated because the JVM does not actually allow this As a result, the compiler injects accessor methods to make them slower or more complex stack traces

For these reasons, I regard it as a local package

The constructor of btw abstract class does not need to be public It can also be protected or packaged locally

private static class A {
    private A() {
        throw new Error();
    }
}
public static void main(String... ignored) {
    new A();
}

Prints an additional stack trace element

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)

Localize the constructor package, the second message

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>