gpt4 book ai didi

Java:私有(private)内部类合成构造函数

转载 作者:太空狗 更新时间:2023-10-29 22:46:18 25 4
gpt4 key购买 nike

<分区>

我有一个 Outer 类,它有一个 private Inner 类。

在我的 Outer 类方法中,我实例化了 Inner 类,如下所示:

Outer outer = new Outer();
Inner inner = outer.new Inner();

编译器将此代码转换为:

Outer outer = new Outer();
Inner inner = new Inner(outer, null);

使用反射显示 Inner 类具有以下合成构造函数:

private Outer$Inner(Outer)
Outer$Inner(Outer,Outer$Inner)

由于 Inner 类是 private,编译器将 private 构造函数添加到它,因此没有人可以实例化该类。但显然 Outer 类应该能够实例化它,因此编译器添加了另一个包私有(private)构造函数,后者又调用私有(private)构造函数。此外,由于 package-private 构造函数的名称中包含 $,因此普通的 Java 代码无法调用它。

问题:为什么要合成一个私有(private)的和一个包私有(private)的构造函数?为什么不只合成包私有(private)构造函数并完成它呢?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com