2011-03-22 139 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

相关问题