2011-02-07 3 views
2

내 프로그램이 NullPointerException을 던지고의 인스턴스 메서드를 호출 무엇을 의미합니까. 내가 Calling the instance method of a null object이가 널 포인터 예외를 던지는 이유를 의심.이 null 객체 "

사람이 실제로 무엇을 의미 하는가 설명 할 수 있습니까?

+0

디버거에서이를 트랩하려고하면 무엇을 볼 수 있습니까? –

답변

1

Java에는 정적 및 인스턴스의 두 가지 유형이 있습니다. 정적 메소드는 클래스의 인스턴스없이 호출 될 수 있으며, 인스턴스 메소드는 클래스의 인스턴스에서 호출되어야합니다 (MUST). 정적 메서드는 인스턴스 메서드를 호출하거나 인스턴스 데이터를 사용할 수 없지만 그 반대는 사실이 아닙니다. — 인스턴스 메서드는 정적 메서드를 호출하고 정적 데이터를 사용할 수 있습니다.

null 참조에서 인스턴스 메소드를 호출하기 때문에 NPE (null pointer exception)가 표시됩니다. 해당 클래스의 실제 객체 (또는 그 하위 클래스)에 대한 참조를 설정해야합니다.

그러나 흥미롭게도 null 참조에서 정적 메서드를 호출하는 것은 합법적입니다. 그것은 매우 이상한 구문이고 다소 오도 된 것이지만 작동 할 것입니다.

12

그것은 당신이 다음과 같습니다 코드 의미 :

foo.method(); 

을 ... 그리고 foonull입니다 foo는 O를 개체 인스턴스를 참조 할 수있다. 메서드를 호출하거나 필드에 액세스 할 수 있습니다. 예를 들어 foo (null 이외의 문자)에 foo = new Foo(); 등과 같은 것을 할당해야합니다.

+0

+1 짧고 달콤한 – Nishant

+0

내 +1 너무 ... @ 에이제 싱 : 그것에 함수를 호출하기 전에 foo를 인스턴스화 해보십시오. – Shrinath

0

초기화하지 않은 개체에서 메서드를 호출했습니다.

myObject.callMethod(); 

그러나 "인 myObject"이 같은 라인으로 초기화되지 않은 : 당신이 더 상황에 맞는 원하는 경우

myObject = new myObjectClass(); 

몇 가지 코드를 게시하시기 바랍니다 exemple 코드를 들어 줄 등이있다 대답 !

관련 문제