Duvida sobrecarga

public class S94 {

public static void go(Long n) {
	System.out.println("Long");
}

public static void go(Short i) {
	System.out.println("Short");
}

public static void go(int x) {
	System.out.println("int");
}

public static void main(String[] args) {
	short y = 6;
	long z = 7;
	go(y);
	go(z);
}

}
porque ele usa a sobrecarga do int e não do short???

[quote=marcusbiava]public class S94 {

public static void go(Long n) {
	System.out.println("Long");
}

public static void go(Short i) {
	System.out.println("Short");
}

public static void go(int x) {
	System.out.println("int");
}

public static void main(String[] args) {
	short y = 6;
	long z = 7;
	go(y);
	go(z);
}

}
porque ele usa a sobrecarga do int e não do short???[/quote]

auto-Boxing e auto-unboxing é algo que passou a existir a partir do java 5. Antes disso, o método escolhido seria o que recebe um int.
Com a chegada dessa nova característica, os caras lá da Sun optaram por manter o funcionamento como era antigamente. Então,
o Short será escolhido somente se não houver algum primitivo compatível. :slight_smile:

O metodo int neste caso é usado pois a operação de ampliação da variavel short para int é mais simples do que empacotar o short primitivo em wrapper. Entao as prioridades de sobrecarga sempre será. Apenas ressalvando o java não faz ampliação e depois empacotamento.

  1. Ampliação - (short primitivo para int)
  2. Empacotamento (short primitivo para wrapper Short)
  3. parametros var-args. (…short)

Abraços

Valeu pessoal

A JVM pensa da seguinte forma:

1º Procura um método equivalente
2º Procura um método com ampliação do tipo
3º Procura um método com Boxing do tipo
4º Procura um método com Boxing de SuperClasses (Por exemplo: metodo(15) pode procurar por metodo(Number x), pois 15 utiliza um boxing Integer que tem Number como superclasse)
5º Procura um método com vararg do tipo ou do tipo ampliado (Caso possua os 2 sobrecarregados ocorre um erro de compilação)
6º Procura um método com vararg com Boxing do tipo
7º Procura um método com vararg com Boxing de SuperClasses

Isso é tudo que eu sei de sobrecarga, alguem acrescenta algo ou corrige?

Falow espero ter ajudado.

Muito obrigado ataufo