java中内部静态类内部的构造函数



我编写了以下代码

public class Reader1 {
    private int pageNumber;
    private class ReaderName1{
        public int getPage(){
        return pageNumber;
        }
    }
    static class ReaderFound{
    }
}

当我在编译的代码上使用Java类文件反汇编程序javap时,我得到了

1. for Reader1.class

class Reader1$ReaderName1 {
              final Reader1 this$0;
              private Reader1$ReaderName1(Reader1);
              public int getPage();
            }

2. for Reader1$ReaderName1.class

    public class Reader1 {
          private int pageNumber;
          public Reader1();
          static int access$000(Reader1);
        }
3. for Reader1$ReaderFound.class

     class Reader1$ReaderFound {
          Reader1$ReaderFound();
        }

我的问题是,既然ReaderFound是一个静态类,它怎么可能有默认的构造函数?如果是,为什么?允许吗

如果允许的话,在类Reader1$ReaderFound中找到的构造函数是什么类型的,因为它不能是静态的。(此外,由于构造函数是隐式调用来初始化对象的,而且ReaderFound是一个静态类,因此我们不会它的对象。我对第一个问题的看法)

Java中有四种嵌套类:静态成员类非静态成员类匿名类地类

静态成员类可以看作是在另一个类内部声明的普通类。它不需要实例化封闭类的实例。由于不需要实例,因此它无法访问封闭类中的实例方法和变量。它可以访问类成员,即使它们是私有的。

class EnclosingClass {
    static class StaticMemberClass { }
    public static void main(String... args) {
        EnclosingClass.StaticMemberClass nestedInstance =
            new EnclosingClass.StaticMemberClass();
    }
}

作为一个静态嵌套类并不意味着你不能从中创建实例。因此,如果你不创建自定义构造函数,就会创建一个默认构造函数。

相关内容

  • 没有找到相关文章

最新更新