gpt4 book ai didi

Java 外部类实例生命周期

转载 作者:行者123 更新时间:2023-11-29 07:14:45 26 4
gpt4 key购买 nike

我对以下内容缺乏理解:如果我使用“速记”创建内部类的实例,即使我没有创建它的显式实例,访问外部类是否是个坏主意?

例如,考虑以下代码:

class OuterClass
{
int i;

OuterClass() { i = 2; }

class InnerClass
{
int get_parent_i() { return (OuterClass.this.i); }
}
}

以下编译并返回预期结果(2):

OuterClass.InnerClass ic = new OuterClass().new InnerClass();

System.out.println(ic.get_parent_i());

我的困惑源于这样一个事实,即我没有显式创建 OuterClass 对象来实例化 InnerClass 对象,尽管一个对象似乎无论如何都存在。谁能告诉我发生了什么,以及我是否应该出于任何原因访问或忘记幻影实例?

非常感谢!

最佳答案

如果不显式创建它的实例,您认为 new OuterClass() 会做什么? :)

您没有显式存储对它的引用,但那是另一回事。无论您对结果做什么,调用构造函数都会生成一个实例。内部类有一个返回外部类的内置 $this 引用,因此只要您保留内部类,就会始终保留对它的引用。

使用内部类是否曾经是个好主意是一个历史上有争议的话题,但这种特定用法并没有什么特别的错误。

关于Java 外部类实例生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591750/

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