Geo*_*lds 1 java nested class parent instance
我对以下内容缺乏了解:如果我使用"速记"创建内部类的实例,那么访问外部类是一个坏主意,即使我没有创建它的显式实例?
例如,请考虑以下代码:
class OuterClass
{
int i;
OuterClass() { i = 2; }
class InnerClass
{
int get_parent_i() { return (OuterClass.this.i); }
}
}
Run Code Online (Sandbox Code Playgroud)
以下编译并返回预期结果(2):
OuterClass.InnerClass ic = new OuterClass().new InnerClass();
System.out.println(ic.get_parent_i());
Run Code Online (Sandbox Code Playgroud)
我的困惑源于这样一个事实:我没有显式创建一个OuterClass对象来实例化一个InnerClass对象,尽管似乎无论如何都存在.有人可以告诉我发生了什么,如果我出于任何原因要么访问或忘记幻影实例?
非常感谢!
new OuterClass()如果没有明确地创建它的实例,你认为怎么办?:)
您没有明确地存储对它的引用,但这是另一回事.无论您对结果执行什么操作,调用构造函数都会生成一个实例.内部类有一个内置$this引用,返回外部类,因此只要保留内部类,就会始终存在对它的引用.
无论是使用一个内部类是曾经一个好主意,是历史上有争议的话题,但没有什么特别不妥的特定使用.