Passando números para métodos

6 respostas
rissato
Se o código abaixo gera "4 3" como resposta como ocorre o processo de autoboxing nesse caso?
class Eggs {
  int doX(Long x, Long y) { return 1; }
  int doX(long... x) { return 2; }
  int doX(Integer x, Integer y) { return 3; }
  int doX(Number n, Number m) { return 4; }

  public static void main(String[] args) {
    new Eggs().go();
  }
  void go() {
    short s = 7;
    System.out.print(doX(s,s) + " ");
    System.out.println(doX(7,7));
  }
}

6 Respostas

E
class Eggs {
   int doX(Long x, Long y) { return 1; }
   int doX(long... x) { return 2; }
   int doX(Integer x, Integer y) { return 3; }
   int doX(Number n, Number m) { return 4; }
 
   public static void main(String[] args) {
     new Eggs().go();
   }
   void go() {
     short s = 7;
     System.out.print(doX(s,s) + " ");
     System.out.println(doX(7,7));
   }
 }

short -> Short (autoboxing) -> Number -> alternativa 4
7 = int -> Integer (autoboxing) -> alternativa 3
Quando há alternativas do tipo “int -> long” ou “int -> Integer”, é preferido o “autoboxing” sobre a conversão.

T

Isso parece coisa que não cai com esse grau de detalhe na prova (algo tão chato seria perguntado na prova de Java 1.4, não na prova de Java 5.0).
Só que na prova 5.0 eles perguntam algumas coisas que são meio absurdas, como saber alguns detalhes da classe java.util.PriorityQueue que você só fica sabendo direitinho se você tiver escrito um “Hello, World” usando essa classe, ou então ter entendido o javadoc que diz:

I

seguinte, se ainda lembro de alguma coia que li, funciona assim:

é possivel transformar um short em um long, no caso,
se nao houvesse uma opçao int doX(Number n, Number m) { return 4; }
o resultado seria diferente. Nesse caso retornaria a chamada do int doX(long… x) { return 2; }.

segundo o da Kathy Sierra
a ampliaçao é preferida no lugar do boxing
a ampliaçao é preferida no lugar do var-args
e boxing é preferido em relaçao aos var-args

I

thingol:
Isso parece coisa que não cai com esse grau de detalhe na prova (algo tão chato seria perguntado na prova de Java 1.4, não na prova de Java 5.0).

ainda segundo o livro da kathy sierra, parece que cai sim =/

R

Olá, pessoal !!

Fiz a prova faz um mês…e caiu uma questão sobre o assunto…!!

I

rafacamargo:
Olá, pessoal !!

Fiz a prova faz um mês…e caiu uma questão sobre o assunto…!!

caiu mais sobre que assunto?
gemericos e threads mesmo?

Criado 10 de julho de 2007
Ultima resposta 10 de jul. de 2007
Respostas 6
Participantes 5