Galera alguém sabe me responder pq quando tento adicionar um array de caracteres em List (list1) ele transforma o resultado em [[C@119298d] [[C@f72617] [[C@1e5e2c3] ???
O objetivo era dar um shuffle no char[] monica mas em list1 ele se transforma nesses numeros.
[code]String texto = “java power super”;
StringTokenizer quebra = new StringTokenizer(texto);
while (quebra.hasMoreTokens()) {
String cebolinha = quebra.nextToken();
char[] monica = cebolinha.toCharArray(); //Transformo em um array de caracteres.
se tiver usando o java 5 nesta linha: List list1 = Arrays.asList(monica);
troque para isto List <Character>list1 = Arrays.asList(monica);
pois um List nao aceita tipos primitivos como char… apenas objetos e wrapers caso nao estaja usando java 5 tenta usar o array pra dar o sluffer ou apos transformar o array em List faça um for dando cast para Charactere…
Lembre que em uma lista só entram objetos, como char é tipo primitivo, ele acaba sofrendo um boxing pra Character.
Então quando você chamou a lista ela chamou o método toString() de cada objeto Character, como eles têm o método toString() da classe Object imprimem somente getClass().getName() + ‘@’ + Integer.toHexString(hashCode()).
O ruim de auto-boxing é que as vezes essas conversões acontecem sem a gente perceber e além dessas confusões entre primitivo e objeto se vc não toma cuidado acaba criando um overhead do cacete.
Depois de dois dias tentando de tudo, deu certo !
Adicionei cada elemento ao List ao invés de adicionar o array inteiro como é feito com Object e como eu estava fazendo acima.
List list2 = new ArrayList(monica.length);
for (int j = 0; j < monica.length; j++) {
list2.add(monica[j]);
}
Random rand = new Random();
Collections.shuffle(list2, rand);
System.out.print(list2);
Valeu galera pela força !
Ola Pessoal, sou novo no forum, e ja tenho um probleminha aqui nas minhas maoes…é o seguinte !
Apos ter feito uma Brigde entre uma Dll (COM+) feita em Delphi e java, eu consigo chamar meus métodos sem problema nenhum.
Porem…alguns métodos (function), possuem seu retorno tipo Variant, que são suportado por outras linguagem, tipo vb etc. Só que o java, quando fez a Bridge do com+, pegou todos os meus retorno tipo Variant e colocou para Object…
Problema…
Tenho uma funcao chamada ADDRESS_NORMALIZATION, e ela me retorna um tipo Object… ja tentei colocar ele dentro uma List da java.util, tentei converter para array de byte e etc…o que voces me sugerem a fazer
[img]
Não pegue carona em outros tópicos. Quando o seu assunto for outro, crie seu próprio tópico.
Tente descobrir qual é o tipo do objeto que o com te retorna, para poder fazer um cast. Geralmente você descobre isso na documentação.
Ou use o seguinte truque. Dê um System.out.println(objeto.getClass().getName()) para ver a classe real do objeto. E daí faça o cast e veja se consegue usa-la.