Duvida sobre ambiguidade de metodoas....a JVM chama qual?

4 respostas
ludionei

Olá, estou começando a estudar para certificação

quando temos métodos ambiguos, quando complila e quando não compila?

se tenho um metodo sobrecarregado byte, double, long qual metodo a JVM irá chamar se na lista de parametros do metodo eu passar um int.

veja o exemplo


4 Respostas

ludionei

package testkillerludionei;

class CalculadoraAmbigua {

public int soma(byte b1, byte b2){

System.out.println("soma de byte");

 return b1 + b2;

}

public long soma (long lg1, long lg2){

    System.out.println("soma de long");

 return lg1 + lg2;

}
public double soma(double db1, double db2){

System.out.println("soma de double");

   return db1 + db2;

}

}

class TesteCalculadora{

public static void main(String args[]){

CalculadoraAmbigua calc = new CalculadoraAmbigua();

    calc.soma(24, 25);      //aqui ele chama o metodo (long, long) não deveria se (byte, byte) ???

}

}

rmendes08

Não, pois constantes inteiras são do tipo int. Apesar do valor caber em um byte elas não são convertidas.

jpjcjbr

Boa tarde,

Quando você executa o código calc.soma(24, 25); você está passando dois inteiros como parametro, nós sabemos que os inteiros são maiores que os bytes então o método que tem dois bytes na assinatura nunca será chamado, o método a ser executado será um método com parametros de entrada que consigam “receber” inteiros, nesse caso o primeiro método seria o que recebe longs e em seguida seria o que recebe doubles.

Espero ter ajudado.

Flws

ludionei

perfeito, agora eu posso prosseguir meus estudos que vão longee…kkkkkkkkk

obrigado.

Criado 19 de janeiro de 2011
Ultima resposta 19 de jan. de 2011
Respostas 4
Participantes 3