返回内部类的静态方法

AOO*_*AOO 10 java static-methods inner-classes

我真的不明白为什么下面的getMyClass2方法不能是静态的,为什么它不是有效的Java代码?

public class MyClass
{
    private class MyClass2
    {
        public String s1 = "";
        public String s2 = "";
    }

    private MyClass2 myClass2;

    private static MyClass2 getMyClass2()
    {
        MyClass2 myClass2 = new MyClass2();
        return myClass2;
    }

    public MyClass()
    {
        myClass2 = getMyClass2();
    }
}
Run Code Online (Sandbox Code Playgroud)

Gai*_*aim 13

您必须说内部类是静态的,因为非静态绑定到实例,因此无法从静态方法返回

public class MyClass
{
    private static class MyClass2
    {
        public String s1 = "";
        public String s2 = "";
    }

    private MyClass2 myClass2;

    private static MyClass2 getMyClass2()
    {
        MyClass2 myClass2 = new MyClass2();
        return myClass2;
    }

    public MyClass()
    {
        myClass2 = getMyClass2();
    }
}
Run Code Online (Sandbox Code Playgroud)