Re bonjour 
	
		
			
			
				Toutefois l'expansion des varargs survient après une première recherche. En effet les varargs sont en fait des tableaux [...]
En réalité tu as ceci :
Code :
	
	1 2
   | void overloading(String[][] s)
void overloading(Object[] o)  | 
 
			
		 
	 
 Ok, les var-args pouvent être imaginés comme des tableaux (éventuellement vide).
D'après ce qui a été dit, après "extension des var args", un paramètre de type String[] correspondra avec l'argument de type Object[] et non String[][] ce qui est logique.
Et c'est peut être aussi pour cela qu'un des intervenants indique que la méthode
	
	1 2
   | //methode écrite par le développeur:
void overloading(Object o)  | 
  correspondra à un appel "without using variable arity invocation", raison pour laquelle elle est appelée. En effet, après expansion des var arg, on a la méthode "généree" 
	
	void overloading(Object[] o)
  que la JVM appelle en passant un (exactement un) String[] d'où la non arité évoquée.  Tandis que si, c'est l'autre méthode qui est appelée , on aurait éventuellement un [][]String vide (si la JVM avait appelé la méthode sans aucun paramètre) d'où la notion d'arité qui apparait.
Au final l'appel sans arité est privilégié.
Mes questions maintenant sont: 
1) Ma compréhension de la chose vous parait-elle juste? 
2) J'ai l'impression que cet overloading non trivial est spécifique au fait qu'on passe un tableau et vous?
Merci d'avance encore une fois 
						
					
Partager