[英]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.