new A().new B()这个是什么 Java 语法

2022 年 11 月 17 日
 movq
class Outer {

    class Inner {
        void print() {
            System.out.println("Inner printing");
        }
    }


    public static void main(String[] args) {
        (new Outer().new Inner()).print();
    }
}

有没有大佬解释一下(new Outer().new Inner()这个步骤具体发生了些什么内容呢?

2447 次点击
所在节点    程序员
12 条回复
ysc3839
2022 年 11 月 17 日
我不懂 Java ,猜测 Inner 是可以用 Outer 里的变量的,所以要在一个 Outer 实例上 new Inner 。
westoy
2022 年 11 月 17 日
镶嵌类, 本质就是
Outer class_ = new Outer();
Outer.Inner inner = class_.new Inner();
inner.print();
biubiuF
2022 年 11 月 17 日
返回了一个类的内部类对象
movq
2022 年 11 月 17 日
@westoy `class_.new Inner();`这种语法叫什么呢
yty2012g
2022 年 11 月 17 日
实例化内部非静态类
mango88
2022 年 11 月 17 日
看一下 内部类 相关的概念定义呗
westoy
2022 年 11 月 17 日
@movq

你可以搜 Nested Classes
66Zi2nJk5Z6mdtzj
2022 年 11 月 17 日
我觉得你在监控我,前天我刚看到新公司的代码,然后问了我朋友,今天你就来。
XXWHCA
2022 年 11 月 18 日
实例话非静态内部类之前需要先实例化它的外部类对象,非静态内部类的会有一个默认的构造方法,参数就是外部类对象。
fiveStarLaoliang
2022 年 11 月 18 日
你的内部类非 static, 如果是 static 的就可以 new Out.Inner() 直接 new 出来了
e7
2022 年 11 月 18 日
一般用于拆类吧,内部类不能独立存在
season8
2022 年 11 月 18 日
@ysc3839 还说你不懂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/896017

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX