2012-08-02 209 views
2

如何调用静态类方法。
我有这样调用静态类方法

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name = "parent") 
public class parent { 

    @XmlElement(required = true) 
    protected String methodName; 
    @XmlElement(required = true) 
    protected MethodCall.Params params; 

    public static class member { 

     @XmlElement(required = true) 
     protected String name; 

     public String getName() { 
      return name; 
     } 

     public void setName(String value) { 
      this.name = value; 
     } 
    } 
} 

我想调用静态类(成员)的getter和setter方法的父类。 我试图通过调用

parent.member.setName("value") 

但它无法正常工作。我怎样才能调用静态类中的setter和getters方法?

+0

嘿,看看http://java2novice.com/java-nested-classes/static-member-class-initialization/页面以获得更多关于如何调用静态成员类方法。 – Java2novice 2012-08-02 10:37:58

回答

0

你不能这样称呼它,因为在静态嵌套类的方法不是静态的功能。它的实例函数。

//Its wrong 
parent.member.setName("value"); 

//right way to call 
parent.member obj= new parent.member(); 
obj.setName("value"); 
3

你会需要一个实例parent.member,因为setName是一个实例方法:

// TODO: Follow Java naming conventions for types... 
parent.member x = new parent.member(); 
x.setName("foo"); 
0

改变方法定义到:

public static String getName() 
public static void setName(String value) 

和栏:

protected static String name; 

使用你的代码调用。另一种方式是instantinate当前类(内侧亲本):

member tmp = new member() 

然后:

tmp.setName("value") 
0

setName()不是静态方法。 因此,只要你想调用这个方法,你就必须使用一个类的实例。

parent.member mem = new parent.member(); 
mem.setName();