2012-08-02 4 views
2

어떻게 정적 클래스 '메서드를 호출 할 수 있습니다.
는 내가 정적 클래스 '(회원) getter 및 setter 메소드를 호출 할호출 정적 클래스 메서드

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; 
     } 
    } 
} 

같은 부모 클래스가 있습니다. 나는

parent.member.setName("value") 

를 호출하여 시도했지만 작동하지 않습니다. 정적 클래스에있는 setter 및 getters 메서드를 어떻게 호출 할 수 있습니까?

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

정적 멤버 클래스 메서드를 호출하는 방법에 대한 자세한 내용은 http://java2novice.com/java-nested-classes/static-member-class-initialization/ 페이지를 참조하십시오. – Java2novice

답변

0

당신은 그런 식으로 호출 할 수 없습니다 정적 중첩 클래스와 메소드가 정적 기능이 없기 때문에, : setName는 인스턴스 메서드이기 때문에

3

당신은 예를 parent.member 필요 했어. 인스턴스 함수.

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

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

변경 메소드 정의에 :

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

과 필드 :

protected static String name; 

가 호출하는 코드를 사용합니다.

tmp.setName("value") 
0

setName()정적 방법이 아닙니다 : 다음

member tmp = new member() 

: 그리고 또 다른 방법은 현재 (부모 내부) 클래스를 instantinate하는 것입니다. 따라서이 메서드를 호출 할 때마다 클래스의 인스턴스를 사용해야합니다.

parent.member mem = new parent.member(); 
mem.setName(); 
관련 문제