2011-03-22 143 views
0

我有一個方法 「B(類克)」,在一個靜態類 「一」如何從另一個類的靜態類中調用方法?

所以 myclass.java包含...

public static class a{ 

    public void b(Class g){ 
    .... 
    } 

} 

比在相同myclass.java

另一種方法
public void c(){ 

if(...){} 
else{ 
    b(); //i want to call b but i get an error asking me to create the method 

} 
+0

其更改爲公共靜態無效B(...);然後從c()中調用a.b(...); – Ron 2011-03-22 05:12:16

回答

2

您的方法b需要Class類型的參數,這就是爲什麼它抱怨。

更新

你也有一個奇怪的類聲明public static class a

Java specification on Class declaration 並非所有修飾符都適用於各種類聲明的...... The access modifier static pertains only to member classes這意味着你的公共類聲明中有錯誤的靜態修飾符。

更改您頂層類聲明public class a先看看它的表現。

+0

還要求建立一個方法 – Technupe 2011-03-22 04:47:30

+0

你還需要一個類型的對象的引用調用b在作爲B方法也不是一成不變的。 – MeBigFatGuy 2011-03-22 04:48:12

+0

您需要將其更改爲'A·B();',並作爲@MeBigFatGuy說,變動b()靜態。您必須指定包含您想要調用的方法的類。 – Jonah 2011-03-22 04:49:35

2

有兩點需要注意: 1)儘管內部類'a'被聲明爲靜態,但方法b(Class g)不是靜態的。因此,爲了訪問B(G類)類的方法「一」,你仍然需要創建的實例「一」,即

a a1 = new a(); 
a1.b(SomeClass.class); 

重要:聲明一個類的靜態不作方法那個類靜態的。

2)當調用方法b(Class g),則需要通過類參數。沒有參數調用b();將導致錯誤。

如果您想在不創建類「a」的實例的情況下調用b(Class g),則將方法b(Class g)標記爲靜態。即

public static class a{ 

    static public void b(Class g){ 
    .... 
    } 

} 

爲了更好地瞭解靜態嵌套類,閱讀this