Sobrecarga Certificação - Caelum

1 resposta
A
public class Ex5_3 {

	void teste(short s) {
		System.out.println(s + " short");
	}
	void teste(float s) {
		System.out.println(s + " float");
	}
	void teste(double s) {
		System.out.println(s + " double");
	}

	public static void main(String[] args) {
		Ex5_3 x = new Ex5_3();
		x.teste(1);
		x.teste('A');
		x.teste(1L);
		x.teste(10F);
		x.teste(1.0);
	}
}
1.0 float 65.0 float 1.0 float 10.0 float 1.0 double

POR QUÊ?

1 Resposta

A

questao dificil

Temos sobrecarga com widening e boxing.

Lembrando que :
1-Widening vence boxing. go(int) ira chamar go(long) ao inves de go (integer) , se ambos estiverem disponiveis .

2-widening de tipos empacotadores nao eh possivel . ex: go(Short) nao podera chamar go(Integer) .
3-Vc nao podera widening e depois boxing. ex: go(int) nao podera chamar go(Long)
4- Vc podera boxing e depois wideing . Isto eh um int podera sofrer boxing e entao widen para Object.

entao:

x.teste(1) , seria facilmente impresso float , pela regra do widening. ja que int eh cabivel em float.

x.teste('A) , char pode ser promovido para int, long, float , double . O menor seria o float…

x.teste(1L); Faz o unboxing para long … long eh cabivel em short? nao . e float… sim .

x.teste(10F);  faz o unboxing para float ... float eh cabivel em float ? sim 
    x.teste(1.0);    Esta eu nao sei explicar...
Criado 27 de abril de 2014
Ultima resposta 27 de abr. de 2014
Respostas 1
Participantes 2