2010-11-28 10 views
64

아래 바깥 쪽 인스턴스는 <내 기준은>

는 코드 필요 포함하는 둘러싸는 인스턴스가 필요합니다. positionObj은 내가 사용하려고하는 객체이며 위의 오류가 발생합니다.

이유가 분명하지 않습니다.

package toolBox; 
import toolBox.Secretary.positionObj;  

public class PositionManagement { 
    public static HashMap<String, Secretary.positionObj> main(String vArg){ 
     positionObj newPosition=new positionObj(); 
    } 
} 

답변

96

Secretary 인스턴스가없는 정적 인 내부 positionObj 클래스를 사용하려고합니다.
정적이 아닌 내부 클래스는 부모 클래스의 인스턴스에 속해야합니다.

positionObj을 보통 클래스 또는 정적 내부 클래스로 변경해야합니다.

someSecretary.new positionObj()을 작성하여 someSecretary 인스턴스에 속한 내부 클래스의 인스턴스를 만들 수 있습니다.

+0

에 동의하지만이 일반 성명은 약간 분명하지 않습니다. 예를 들어 설명해 주시거나 어딘가에서 이것을 설명해 주시겠습니까? 감사합니다 –

+1

@ 제이슨 : 여기 있습니다. – SLaks

+0

예. 나는 내 positionObj를 정적으로 만든다면 그 디버깅을 시도 할 때 깨달았습니다 (Secretary 클래스에서). 나는 행복하고 이제는 작동하지만, 포인터에 감사드립니다. 이 오류의 실제 원인을 조사합니다. –

0

올바른 일반적인 서명은 이미 오기 때문에 당신이 그나마

public static HashMap<String, positionObj> main(String vArg) 

이 positionObj을 평가해야 할 것이다.

그러나 메인 메서드가 아래 서명을 준수해야합니다. 당신이하려는 경우 주, 프로그램의 주요 방법이 될 당신이지도를 반환하는 별도의 정적 메서드를 만들 수 있습니다

public static void main(String[] args) {...} 

에 서명을 변경하고 메인에서 호출.

참고로 모든 클래스는 대문자 인 positionObj로 시작해야하며 PositionObj 여야합니다.

+0

안녕하세요, 일부 코드는 제외되었습니다. 사건에 대해 동의했다. 클래스는 무언가를 반환하지만 오류는 여기에 있으며 이유는 확실하지 않습니다. –

+0

@ jason, 내 대답은 – hvgotcodes

+0

@jason으로 업데이트되었는데, 메인에서 아무것도 반환 할 수 없다고 생각합니다. – hvgotcodes

1

먼저 Outer 클래스의 개체를 만듭니다. 이 경우 나는 "장관"이라고 생각합니다. 그런 다음 positionObj를 만듭니다. 이와 같이

Secretary x = new Secretary(); 
Secretary.positionObj y = x.new positionObj(); 
관련 문제