2012-08-02 259 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();