Receber um object e converter pra int

[code]public static void main(String[] args) {

int[] numeros = {1,2,3};
teste(numeros);

}[/code]

public static void teste(Object numero){ // imprimir aqui os numeros do array. System.out.println("object"); }

Pessoal como eu faço pra poder imprimir onde eu comentei os numeros do array, pq com o argumento int eu faria dessa forma, mas com object como faço?

public static void testeI(int...numero){ for(int teste : numero){ System.out.println(teste); } System.out.println("varargs int"); }

Como isso é uma operação arriscada, já que de dentro da função vc não pode garantir que o object é mesmo um int[], você precisa de um cast.

public static void teste(Object numero){ int[] numeros = (int[])numero; for(int teste : numeros){ System.out.println(teste); } System.out.println("object"); }

Vini muito obrigado deixa eu fazer so mais um pergunta, esse cast foi de um Object para um int[] isso é possivel so porque um array e um objeto? Se fosse por exemplo um cast de um Object para um “int” somente iria da ClassCastException?

Sim. É possível pq int[] é um objeto.

Não é possível converter para um int primitivo. int e Objects não são convertíveis, portanto, você nem sequer conseguiria compilar o código.

O ClassCastException você recebe sempre que o Object contiver um valor que não seja do tipo ao qual vc está tentando fazer cast. Por exemplo, ao chamar a função assim:

String[] x = {"a", "b"}; teste(x); //ClassCastException String[] não é um int[]

Da mesma forma, vc receberia um ao tentar converter o Object para um Integer. Já que int[] também não é convertível para Integer.

Hum vlw brigadão Vini.

Só para completar você ainda pode testar se o Object q vc recebeu é realmente um int[]


public static void teste(Object numero){    

   if (numero instanceof int[]) {

      int[] numeros = (int[])numero;  
      for(int teste : numeros){    
         System.out.println(teste);    
      }    
      System.out.println("object");       
   }
} 

e se no caso o metodo tivesse como argumento um varargs de Object (Object…numero) teria como fazer cast?

Você trabalha como se fosse um array msm

sim, mas teria que fzer um cast pra poder imprir os numeros, esse cast seria como? To tentando aqui mas ta dando erro.

public void teste(Object...args){
int[] ints = (int[])args[0];
}

Mark vlw cara deu certo aqui, mas olha so args[0], esta sendo atribuido somente a posição 0 do array? Eu entendi que sim ai na hora de imprimir imprimiu todos…

[quote=evertonsilvagomesjava][code]public static void main(String[] args) {

int[] numeros = {1,2,3};
teste(numeros);

}[/code]

public static void teste(Object numero){ // imprimir aqui os numeros do array. System.out.println("object"); }
[/quote]

Das duas uma. Ou vc quer uma função de impressão generica, ou quer impremir array de int.
Se é array de int, use test(int[] array) e pronto. Se é genérica user numero.toString();

Não faça cast.

Apenas uma observação: Você até poderia converter de Object para inteiro, mas teria que usar a classe Integer…

nao tem como converter um array int[] para um Integer não, eu so to fazendo testes em chamada de métodos, ai queria saber so pq o metodo do Mark acima ele passa a posiçao 0 e imprime todas posiçoes…

Por que ele encara o array inteiro como um único objeto, que é colocado no índice 0.

Vini isso é regra pra métodos com argumentos (Object…) ?
E passado tudo de um array so para a posiçao 0?

Se o array for de Object[], não.

Se eu passar um array de Object, por exemplo como, Object numeros = {1,2,3} para um método (Object…), não tem como eu ler os numeros nao tem? Porque não tem como converter um array Object para Integer e depois para int…

Tem sim.

[code]Object objects = new Object[3];
objects[0] = 1;
objects[1] = 2;
objects[2] = 3;

for (Object obj : objects) {
Integer numero = (Integer)obj;
System.out.println(numero);
}[/code]

No Vini brigadao eheh, o array nao da pra converter mas a posiçao sim rsrs vlw vini brigadao!!