如何从另一个类的静态类中调用方法?
我有一个方法 “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
}
您的方法b
需要Class
类型的参数,这就是为什么它抱怨。
更新
你也有一个奇怪的类声明public static class a
按Java specification on Class declaration 并非所有修饰符都适用于各种类声明的...... The access modifier static pertains only to member classes
这意味着你的公共类声明中有错误的静态修饰符。
更改您顶层类声明public class a
先看看它的表现。
还要求建立一个方法 – Technupe 2011-03-22 04:47:30
你还需要一个类型的对象的引用调用b在作为B方法也不是一成不变的。 – MeBigFatGuy 2011-03-22 04:48:12
您需要将其更改为'A·B();',并作为@MeBigFatGuy说,变动b()静态。您必须指定包含您想要调用的方法的类。 – Jonah 2011-03-22 04:49:35
有两点需要注意: 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
其更改为公共静态无效B(...);然后从c()中调用a.b(...); – Ron 2011-03-22 05:12:16