web-dev-qa-db-fra.com

appel de la méthode statique dans java

Duplicata possible:
Comment se fait-il que l'invocation d'une méthode (statique) sur une référence nulle ne lève pas NullPointerException?

Quelqu'un peut-il expliquer pourquoi la sortie du programme suivant est " Appelé "

public class Test4{

  public static void method(){
    System.out.println("Called");
  }

  public static void main(String[] args){
    Test4 t4 = null;
    t4.method();
  }
}

Je sais que nous pouvons appeler une méthode statique avec une référence de classe, mais ici j'appelle en utilisant une référence nulle. veuillez clarifier mon doute

11
Raj

Dans le code octet

Test4 t4 = null;
t4.method();

sera

Test4 t4 = null;
Test4.method();

Le compilateur convertirait l'appel avec le nom de classe pour les méthodes statiques. reportez-vous à cette question on SO que j'ai moi-même posée).

15
PermGenError

Peu importe si l'instance est nulle, car vous appelez une méthode statique. Pensez-y de cette façon.

Chaque méthode statique est équivalent à un méthode de classe tandis qu'un méthode non statique est équivalent à un méthode d'instance.

Par conséquent, peu importe la valeur que prend l'instance tant que vous travaillez avec méthodes statiques ou membres.

2
Mihai M.

Les méthodes statiques peuvent être appelées via le nom de classe ou une instance. J'essaierais d'éviter de les appeler par une instance (aussi beaucoup d'outils vous avertissent de le faire à cause d'une mauvaise pratique).

0
MrSmith42