Dlaczego nie otrzymuję NullPointerException? [duplikować]
Możliwy duplikat:
Pola statyczne na pustym odwołaniu w Javie
Rozumiem, że metody statyczne są na poziomie klasy. Wiem więc, że nie muszę tworzyć instancji, aby wywoływać metody statyczne. Ale wiem też, że mogę nazwać metodę statyczną LIKE metodą instancji. W tym miejscu jestem zdezorientowany, ponieważ oczekiwałemNullPointerException
podczas wywoływania metody statycznej z obiektu zerowego (jak w wywołaniu metody instancji). Naprawdę doceniłbym wyjaśnienie, dlaczego niesłusznie oczekiwałemNullPointerException
tutaj.
Oto przykładowy kod:
public class SampleClass {
public static int getSumStatic(int x, int y){
return x+y;
}
public int getDifferenceInstance(int x, int y){
return x-y;
}
}
public class TestClass {
public static void main (String[] args){
SampleClass sc=null;
System.out.println(SampleClass.getSumStatic(2, 2)); //as expected
//I was expecting NullPointerException in the next line, since I am accessing null object
System.out.println(sc.getSumStatic(4,5)); //static method , executes perfectly
System.out.println(sc.getDifferenceInstance(6,4));//throws NullPointerException
}
}