我很惊讶地发现嵌套类的私有(private)构造函数仍然可以从嵌套类中调用。例如:
public class A{
public void foo(){
//private constructor of B
//can be called from A
B b = new B();
}
//nested class
public static class B{
private B(){
}
}
}
这是否意味着无法在嵌套类上强制执行单例模式?或者我在这里遗漏了一些基本的东西?
最佳答案
不仅仅是构造函数,任何私有(private)字段或方法都可以访问:
public class Main {
public static void main(final String[] args) {
final B b = new B();
b.whut();
}
public static class B {
private B() {
System.out.println("hey");
}
private void whut() {
System.out.println("wut?");
}
}
}
外部类可以访问其嵌套类的私有(private)字段:
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
关于java - java中可以有嵌套的单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389065/