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

Ank*_*and 6 java oop javap

我写了下面的代码

public class Reader1 {
    private int pageNumber;

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

    }
}
Run Code Online (Sandbox Code Playgroud)

当我在已编译的代码上使用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();
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是,因为ReaderFound是一个静态类,它怎么能有一个默认的构造函数?如果是这样的话?是允许的吗?

如果允许在Reader1 $ ReaderFound类中找到什么样的构造函数,因为它不能是静态的.(此外,由于构造函数被隐式调用以初始化一个对象,因为ReaderFound是一个静态类,所以我们没有它的对象.我对第一个问题的观点)

And*_*ira 7

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

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

class EnclosingClass {
    static class StaticMemberClass { }

    public static void main(String... args) {
        EnclosingClass.StaticMemberClass nestedInstance =
            new EnclosingClass.StaticMemberClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

作为静态嵌套类并不意味着您无法从中创建实例.因此,如果您不创建自定义构造函数,则将创建默认构造函数.

  • @BreakingBenjamin仅当方法本身是静态的时候.如果没有,您需要一个实例来访问它. (2认同)