簡體   English   中英

返回內部類的靜態方法

[英]Static method returning inner class

我真的不明白為什么下面的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();
    }
}

您必須說內部類是靜態的,因為非靜態綁定到實例,因此無法從靜態方法返回

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

(非靜態)內部類實例始終與它們所包含的類的實例相關聯。 靜態方法將在不引用MyClass的特定實例的情況下被調用,因此如果它創建了MyClass2的實例,則不會有MyClass的實例與之關聯。

是,

因為99%的時間你不想讓它們靜止; D.

靜態“嵌套”類只不過是在另一個類中定義的“頂級”類。 如果上面例子中的靜態類MyClass2是公共的,你可以說新的MyClass.MyClass2(); 在普通的“內部類”的情況下,你會想到一個對象,而不是MyClass類:MyClass some = new MyClass()然后像new some.MyClass2()(我忘記了確切的語法)。

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM