Olá Pessoal
Alguém sabe me dizer
Object[] sb = l.toArray();
Integer[] sa = new Integer[10];
sa = l.toArray(sa);
porque o Object[] não precisa ser inicializado para usar a função toArray() e o Integer[] precisa?
[]s
Gunnar
Olá Pessoal
Alguém sabe me dizer
Object[] sb = l.toArray();
Integer[] sa = new Integer[10];
sa = l.toArray(sa);
porque o Object[] não precisa ser inicializado para usar a função toArray() e o Integer[] precisa?
[]s
Gunnar
O toArray() retorna um Array de Object…acho que seu código não está correto.
List<Integer> a = new ArrayList<Integer>();
Integer [] b = (Integer[])a.toArray();
Object [] c = a.toArray();
Vendo esse trecho pequeno que vc colocou, dá pra entender que o problema está na passagem do sa por parâmetro… daí não teria nada a ver com o toArray(), e sim com o fato de vc estar tentando usar a variável sa sem ter sido inicializada.
Se l for alguma coleção cujo tipo genérico seja Integer, vc poderia fazer:
Integer[] sa = l.toArray();
//sem passar argumentos, do mesmo jeito q vc fez:
Object[] sb = l.toArray();
[]'s
o metodo toArray() ele retorna um Object.
Mas entenda o seguinte
Object[] sb = l.toArray();
vc declaraou uma variavel do tipo Objetct que é um array e esta recebendo os elementos de l que vai retornar um Object.
quando vc usa = está dizendo que aquela variavel vai referencia para algum lugar… ou seja, apontar vamos dizer assim para ver se fica mais facil… e assim vc ja inicializou a variavel.
Agora assim ela nao é inicializada veja.
Object var; //se for declarada dentro de um metodo se for fora(instancia) recebe null por padrao
espero ter ajudado flw!!
Olá Galera,
Seguinte…
a interface List possui dois métodos toArray().
um toArray() que não recebe parâmetros e retorna um objeto Object[]
dai
Object sb = l.toArray(); //funciona sem inicializar
e o método T[] toArray(T[] t)
Integer[] sa = new Integer[10];
sa = l.toArray(sa); //não funciona sem inicializar sa
sendo l
List<Integer> l = new ArrayList<Integer>();
tentem compilar o seguinte código:
import java.util.*;
public class toArray{
public static void main(String[] args){
List<Integer> l = new ArrayList<Integer>();
for(int i = 0; i < 10; i++) l.add(i);
Integer[] sa = l.toArray(sa);
for(int i = 0; i < 10; i++) System.out.println(sa[i]);
}
}
e depois
import java.util.*;
public class toArray{
public static void main(String[] args){
List<Integer> l = new ArrayList<Integer>();
for(int i = 0; i < 10; i++) l.add(i);
Object[] sa = l.toArray();
for(int i = 0; i < 10; i++) System.out.println(sa[i]);
}
}
[]s
Gunnar
[quote=leofernandesmo]O toArray() retorna um Array de Object…acho que seu código não está correto.
List<Integer> a = new ArrayList<Integer>();
Integer [] b = (Integer[])a.toArray();
Object [] c = a.toArray();
[/quote]
Fiz o código que você citou…dá ClassCastException.
[]s
Gunnar
[quote=RafaelVS]Vendo esse trecho pequeno que vc colocou, dá pra entender que o problema está na passagem do sa por parâmetro… daí não teria nada a ver com o toArray(), e sim com o fato de vc estar tentando usar a variável sa sem ter sido inicializada.
Se l for alguma coleção cujo tipo genérico seja Integer, vc poderia fazer:
Integer[] sa = l.toArray();
//sem passar argumentos, do mesmo jeito q vc fez:
Object[] sb = l.toArray();
[]'s[/quote]
fiz do jeito que você sugeriu…
d:\Text\java\programas\SCJP\src>javac -d ..\class Containers\toArray.java
Containers\toArray.java:10: incompatible types
found : java.lang.Object[]
required: java.lang.Integer[]
Integer[] sa = l.toArray();
^
1 error
É pq o método l.toArray() sem argumentos retornar Object[]. Pra fazer similar, sem precisar instanciar sa, vc pode fazer assim:
Integer[] sa = l.toArray(new Integer[10]);
[]'s
Opa
Valeu 
[]s
Gunnar