Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
marcusbiava wrote: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???????
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.
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
Membro desde: 21/08/2007 01:43:38
Mensagens: 244
Offline
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)
Membro desde: 21/03/2009 12:15:23
Mensagens: 267
Offline
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.
This message was edited 2 times. Last update was at 02/08/2009 19:01:31