2012-09-17 5 views
0

다음과 같이 2 개의 클래스가 있습니다. 세 번째 클래스에서추상 클래스, 메서드 구현 구현

public absract class myAbstracClass{ 

//various methods and stuff. 

} 

public class myImplmentationOfAbstractClass extends myAbstractClass { 

//just implments a call to the abstract class in the constructor. 
//no extrac functionality is added in this instance. 
} 

나는 그때 분명 뭔가를 누락

public class doWork{ 

    public static void main(){ 

    //create my implmented class 
    myImplmentationOfAbstractClass myABC = new myImplmentationOfAbstractClass(); 

    //send this class to my function 

    someFunctionality.myMethod(myABC);//this causes an NPE 

    } 

    } 

이 방법을 호출 내 코드에서 방법

public class someFunctionality{// 

//default constructor 

public static void myMethod(myAbstractClass abc) 
//do stuff with abc 

} 

을 가지고, 내가 찾는 아니에요 구글에서.

지금은 myImplementationOfAbstractClass 객체를 허용하도록 메서드를 변경했습니다. 그러나 이것은 추상 클래스를 다시 사용하고 특정 인스턴스에 대해 확장해야 할 것으로 예상됨에 따라 나쁘다.

이 문제가 잘못되거나, 수퍼 클래스 복사본을 예상하는 메서드에 수퍼 클래스의 하위 클래스를 보낼 수 있습니까?

미리 감사드립니다.

데이비드.

편집 :

난 그냥 대답하는 시간을 촬영하고있다 모든 사람에게 감사의 말씀을합니다. 당신은 모두 정확합니다. 문제는 다른 곳에서 발생했습니다.

내 함수 내에서 다른 임시 객체를 선언하고 잘못된 멤버로 선언하고 있다고 밝혀졌습니다.

다시 한 번 말씀 드리지만, 질문을 작성하는 과정은 응답과 마찬가지로 도움이되었습니다. 우리 모두는 같은 결론을 내었습니다. (나는 당신이 내가 추측 한 응답을 게시하는 곳에서와 마찬가지로) 그것을 깨달았습니다.

+0

myMethod 매개 변수를 하위 클래스로 변경 한 후 동일한 코드를 사용합니까? 그것은 이상 할 것이다! – Vikdor

+3

당신이 묘사하는 것이 불가능한 것처럼 보이기 때문에 다른 것이 있어야합니다. [SSCCE (Short, Self Contained, Correct Example)] 게시 (http : //www.sscce.org /)는 문제를 잘 보여 주므로 더 나은 답변을 얻을 수 있습니다. – assylias

답변

1

myMethod 오류입니다.
이 코드

myImplmentationOfAbstractClass myABC = new myImplmentationOfAbstractClass(); 
someFunctionality.myMethod(myABC);//this causes an NPE 

cannt '투사 NPE

+0

사실 그것은 NPE를 던지고있는 myMethod의 일부인 하위 메서드 내부 깊숙한 곳이었습니다. 우연히이 선에 붙 잡혔다. NPE가 3 ~ 4 콜을 더 진행했기 때문에 처음에는 스타 틱 트레이스에서 '현명한'것을 찾지 못했습니다! (이 나쁜 디자인입니까?) – DaveM

1

youve를 제공 ​​한 코드 아무 문제, 널 포인터 예외의 원인은 뭔가 다른 ... 당신을 확인하는 경우가 될 수는 없다 스택 추적을 사용하거나 문제의 원인이되는 행을 정확하게 식별 할 수 있다면 문제 식별에 도움이됩니다.

1

첫 번째 추측 : 문제는 다른 곳에서 발생합니다. 인수 유형이 구현의 수퍼 클래스 또는 인터페이스가되어야하는 경우 구현을 인수로 제공하는 데는 아무런 문제가 없습니다.

0

방금 ​​함수가 포함 된 클래스가 올바르게 작성되지 않았다는 것을 알게되었습니다. 따라서 NPE는 변수를 사용하기 전에 변수를 null로 설정하지 않아서 어리 석음 때문에 발생했습니다.

그래서 귀찮게 대답하는 모든 사람들에게 +1하십시오. 나는 너희들이 쓰는 곳과 똑같이 이것을 깨달았다.

관련 문제