Qual a saída deste cod:
[code]package com.testeWrapper;
public class MetosWrapper {
static String s = " ";
public static void main(String[] args) {
int x=4; Boolean y = true; short[]sa = {1,2,3};
doStuff(x,y);
doStuff(x);
doStuff(sa, sa);
System.out.println(s);
}
static void doStuff(Object o){
s += "1";
}
static void doStuff(Object...o){
s += "2";
}
static void doStuff(Integer...i){
s += "3";
}
static void doStuff(Long L){
s += "4";
}
}
[/code]
kkk e sim, mas vc compilou? Ai nao vale rs
tem que explicar ai pq uai eheh.
Na verdade o que confunde um pouco é aquele método com Long…Mas nestes
métodos será feito o boxing de primitivo para wrapper e a ampliação para Object ou
var-arg de Object… 
rsrs é isso ai, mas e bom lembrar que a variavel “x” int, poderia chamar o metodo para fazer o boxing para Integer, mas no caso ele não o faz por causa do varargs que em java não tem prioridade, masss é isso ai!!!
212…
Essa questão e bem interessante : Temos uma ordem para escolher qual método usar:
-
primeiro tentamos fazer a ampliação ou seja, se temos tipos primitivos podemos colocar um byte dentro de um int e assim por diante, Byte -> short -> int -> long
-
Autoboxing é feito quando transformando um int em um Integer , como Integer extens Object ele tambem pode ser um objeto, caso não tenha um int podemos usar um metodo que use Object
-
A ultima opção e var array.
É so pensar na ordem que apareceu no java , primeiro a ampliação, depois os wrappes e por ultimo o var array.
Cuidado algumas conversões não são possiveis como:
byte b=5;
go(b);
static void go(Long x){}
Não é válido pois precisamos fazer um ampliação depois um auto-boxing
Tambem não e válido ampliar Wraper
Byte b=5;
go(b);
static void go(Long x){}
Bem vou ficando por ai…flw