前提是这个内部类必须是 public 。

假设外部类需要实例化某个类的内部类。那么必须首先实例化内部类的所在类,然后再通过 .new 语法来实例化这个内部类。下面是一个示例:

public class DotNew {
    public class Inner {
    }

    public static void main(String[] args) {
        DotNew dn = new DotNew();
        DotNew.Inner dni = dn.new Inner();
    }
}

首先实例化内部类的所在类(DotNew),然后再通过 .new 语法来实例化这个内部类(Inner)。

也就是说不能直接实例化内部类,必须通过所在类的实例,来间接实例化。


参考:
BruceEckel, 埃克尔, 陈昊鹏. Java编程思想[J]. 机械工业出版社, 2007. p193.