gpt4 book ai didi

Java 内部类隐藏外部类

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:38 25 4
gpt4 key购买 nike

我从 K&B 书“SCJP Sun Certified Programmer for Java 6 Study Guide”中获取了以下代码:

class A { // 1
void m() {
System.out.println("outer");
}
}

public class TestInners {

public static void main(String[] args) {

new TestInners().go();

}

void go() {

new A().m();

class A { // 2
void m() {
System.out.println("inner");
}
}

}

class A { // 3
void m() {
System.out.println("middle");
}
}
}

如书中所述,此代码打印“中间”。我推断标记为“3”的类声明隐藏了标记为“1”的类声明,它在 TestInners 类之外。如果这些类位于不同的包中,我可以通过使用包名称限定其中一个类来解决歧义。但在这种情况下,这些类不仅在同一个包中,而且在同一个文件中。如何获取外部类的实例?

我看到了同样的问题here但接受的答案意味着修改代码,为整个事物添加一个封闭类。我的问题是如何使用任何类型的限定符或引用来获取实例,如果可能的话。

最佳答案

假设你的类在包 com.test 中,你需要做的就是使用

new com.test.A().m();

使用类的完全限定名称。

如果您的类在默认包中,即。没有 package 声明,那么你就倒霉了,无法访问外部 A

关于Java 内部类隐藏外部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20270183/

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