Je me suis rendu compte d'un petit truc étrange en Java.
Si j'ai 2 méthode avec le même nom mais des paramètres différents qui sont des objets :
et que j'appèle la méthode truc(null). Java va sortir l'erreur "The method truc(Integer) is ambiguous for the type Test".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void truc(Integer b){ } void truc(String a){ }
Ok, c'est logique, il est impossible de savoir quel méthode appeler.
Mais maintenant si une des 2 méthode à comme paramètre un Object :
l'appel de truc(null)ne créera aucune erreur de compilation et lors de l'exécution, la méthode truc(String) sera toujours appelée!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 static void truc(Object b){ System.out.println("Object"); } static void truc(String a){ System.out.println("string"); }
Ma question est pourquoi quand une des méthodes à comme paramètre un Object il n'y a pas d'erreur de compilation et est-ce que cela fonctionne de la même façon sur toutes les JVM?
Partager