考虑:

    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();
}


这将打印“外部”。

09-26 20:38