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 方法?

4

4 回答 4

3

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

// TODO: Follow Java naming conventions for types...
parent.member x = new parent.member();
x.setName("foo");
于 2012-08-02T10:14:14.733 回答
0

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

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

//right way to call
parent.member obj= new parent.member();
obj.setName("value");
于 2012-08-02T10:15:52.673 回答
0

将方法定义更改为:

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

和领域:

protected static String name;

使用您的代码进行调用。另一种方法是实例化当前类(在父类内部):

member tmp = new member()

进而 :

tmp.setName("value")
于 2012-08-02T10:17:01.343 回答
0

setName()不是静态方法。因此,无论何时要调用此方法,都必须使用类的实例。

parent.member mem = new parent.member();
mem.setName();
于 2012-08-02T10:17:45.377 回答