Verdade.
Não é permitido casting de arrays de tipos primitivos diferentes.
Acho que eles estão em hierarquias diferentes.
S
sensPJ
O casting de objeto é diferente do casting de primitivos! No caso dos primitivos um tipo é convertido para outro tipo, podendo ocorrer perdas ou não! No caso de Objetos o casting nada mais faz do que mudar a referencia associada aquele Objeto.
Os array´s são considerados objetos, então não tem como eu trocar uma referencia de um array de “int” para uma referencia de um array de “long”, pois teria que ser trocado cada referencia interna dentro do array não bastando trocar apenas a referencia do array…
heheh acho q confundi ainda mais, mais valeu a minha intenção… eheheh
[]s Victor
S
SchuenemannPJ
Eu entendi e concordo.
O que eu quis dizer com hierarquias diferentes é:
Os arrays estendem Object, não sei se direta ou indiretamente. No fim, int[] e long[] estendem a mesma classe, ficando cada um num caminho diferente da árvore.
F
fmartinsPJ
Esse lance do array de primitivo é interessante.
Como vocês disseram não é possível mesmo fazer o cast de um
array que de primitivos para outro array de um tipo diferente.
tanto cast explicito quanto implicito.
Agora pra objetos a coisa muda, vc pode sim fazer esse cast!
um ex.:
Object[] arrayObj = new Object[5];
Integer[] arrayIntg = new Integer[5];
arrayObj = arrayIntg; //Perfeitamente válido!
J
JabaPJ
Concordo com o erro no 4 mas tambem temos outro erro nesta parte do codigo:
long[] l1 = new long[5]; // 2
long []l2 = l1; // 3
na linha 3 e tentado atribuir um array de longs em um array de longs q espera receber um tipo primitivo long e n um array… sendo assim temos um erro na linha 3,
VLW
S
SchuenemannPJ
“Jaba”:
Concordo com o erro no 4 mas tambem temos outro erro nesta parte do codigo:
long[] l1 = new long[5]; // 2
long []l2 = l1; // 3
na linha 3 e tentado atribuir um array de longs em um array de longs q espera receber um tipo primitivo long e n um array… sendo assim temos um erro na linha 3,
VLW
Hmmm… não tem erro não, cara. Um array de long (l1) está sendo atribuído à uma variável (l2) que espera um array de long.