java - java中可以有嵌套的单例吗?

标签 java singleton nested-class

我很惊讶地发现嵌套类的私有(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/

相关文章:

java - org.openqa.selenium.support.ui.UnexpectedTagNameException : Element should have been "select" but was "span" while selecting a dropdown value

java - OkHttp:与 http://example.com/的连接被泄露。您是否忘记关闭响应主体?

c++ - 两级嵌套的 C++ 类适用于 GCC,但不适用于 Clang

java - dateTimeFormat 的有效掩码模式

java - 输入为负数时如何退出扫描仪?

iphone - 在 Singleton 中设置 NSMutableDictionary 条目?

c# - 在 C# 中为 'this' 创建一个实例变量

ios - iOS Objective-C 中 Singleton 类和 AppDelegate 类的关系

c# - linq嵌套列表包含

c# - 对常量使用嵌套类?