Instanceof versus array de primitivos

13 respostas
saoj

Tenho um objeto x que pode ser qualquer array de primitivos (int[], long[], etc.)

Como transformar x numa collection rapidamente?

13 Respostas

M

Olá Sérgio. Acho que não é isso que você quer né?

int[][] multi = new int[][] {{1, 2}, {1, 2, 3}, {1, 2, 3, 4}};
List<List<Integer>> multiList = new ArrayList<List<Integer>>(multi.length);
for (int[] array : multi) {
    List<Integer> list = new ArrayList<Integer>(array.length);
    for (int i : array) {
    	list.add(i);
    }
    multiList.add(list);
}

fonte: http://forum.java.sun.com/thread.jspa?threadID=5187253

Paulo_Silveira

Arrays.asList

saoj

Mas eu preciso saber se eu estou realmente passando um array.

isArray() the Class resolve a primeira pergunta.

Mas eu não quero passar Object[] apenas primitivo[].

Como saber se tenho um array de primitivos? Um if para cada ???

Não, quero algo dinamico que aceito qualquer primitivo[].

T

Paulão, Arrays.asList não funciona com arrays de tipos primitivos - não é feito nenhum autoboxing nesse caso.

T

Acho que é algo como

Class&lt;?&gt; klass = int[].class;
boolean isAnArrayOfPrimitives = klass.isArray() && klass.getComponentType().isPrimitive();
Paulo_Silveira

thingol:
Paulão, Arrays.asList não funciona com arrays de tipos primitivos - não é feito nenhum autoboxing nesse caso.

ate funciona, mas vai devolver uma array de tamanho 1 ja que ele aceita varargs, hehehehe :).

eh, mas nao serve pro Sergio.

saoj

getComponentType eu não conhecia… legal…

E tendo um Object x que é um array de primitivos, o que eu faço? :slight_smile:

T
Object x = new int[200];
Class&lt;?&gt; klass = x.getClass();
boolean isAnArrayOfPrimitives = klass.isArray() && klass.getComponentType().isPrimitive();
saoj

Isso me fala se o que eu tenho é um array de primitivos.

De posse de um array de primitivos, como eu transformo em Collection?

Arrays.asList não funciona. Eu tb achei que funcionasse…

T

Não tem jeito, irmão, acho que você vai ter de fazer um loop (argh). Que tal um pouco de copy & paste & modify?

saoj

O loop não é o problema, mas o IF para cada primitivo para poder fazer o cast. Tá muito feio pra ser verdade!

T

Mas acho que é assim mesmo. Paciência :frowning:

saoj

Beleza. Um belo caso para uma classe JavaUtil.java.

E esse aqui: http://www.guj.com.br/posts/list/83129.java

Um pouco mais difícil… :slight_smile:

Alguma idéia?

Criado 26 de fevereiro de 2008
Ultima resposta 26 de fev. de 2008
Respostas 13
Participantes 4