考虑:
package test;
class Same {
void method() {
System.out.println("outer");
}
}
public class Main {
class Same {
void method() {
System.out.println("middle");
}
}
public static void main(String[] args) {
new Same().method(); // Compile time Exception: No enclosing instance of type Main is accessible
}
}
我知道内部类“遮蔽”外部类“ Same”,因此为什么我会遇到编译错误。我想知道是否可以在Main中创建“外部相同”的实例。如果是,怎么办?谢谢。
ps。感谢您的回答,但是,请先尝试使用您建议的代码。另外,我知道如何更改代码以使其正常工作,我需要不加任何更改地了解当前情况(例如将类保留在不同的文件中)。
最佳答案
您需要在软件包名称前添加前缀(假设外部的Same在测试软件包中):
public static void main(String[] args) {
new test.Same().method();
}
这将打印“外部”。