如何从另一个类中的静态类调用方法?

时间:2011-03-22 04:43:58

标签: java static-methods

我在静态类“a”中有一个方法“b(Class g)”

所以 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

}

2 个答案:

答案 0 :(得分:2)

您的方法b需要Class类型的参数,这就是它抱怨的原因。

<强>更新

您还有一个奇怪的类声明public static class a

根据Java specification on Class declaration 并非所有修饰符都适用于所有类声明...... The access modifier static pertains only to member classes ,这意味着您的公共类声明中有错误的static修饰符。< / p>

首先将顶级类声明更改为public class a,然后查看其行为。

答案 1 :(得分:2)

有两点需要注意: 1)即使内部类'a'被声明为静态,方法b(Class g)也不是静态的。因此,为了访问类'a'的b(Class g)方法,你仍然需要创建一个'a'的实例,即

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

重要说明:声明类static不会使该类的方法成为静态。

2)调用方法b(Class g)时,需要传递Class参数。不带参数调用b();将导致错误。

如果要在不创建类“a”的实例的情况下调用b(Class g),请将方法b(Class g)标记为静态。即

public static class a{

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

}

为了更好地理解静态嵌套类,请阅读this