我想把list 转成数组
ADTO[] result = (ADTO[])list.toArray(new ADTO[5]);
我发现toArray方法的参数无论写new ADTO[5]还是写new ADTO[4],或new ADTO[2],或new ADTO[0]结果都一样的。这是为什么呢?下面是具体的代码:
import java.util.ArrayList;
import java.util.List;public class HelloWorld{
public static void main(String[] args){
HelloWorld h = new HelloWorld();
h.exercise();
}
private int exercise(){
List list = createList();
for(int i=0;i<10;i++){
ADTO aDTO = new ADTO();
aDTO.setName(String.valueOf(i+"fuck"));
list.add(aDTO);
}
ADTO[] result = (ADTO[])list.toArray(new ADTO[0]);
for(int i=0;i<result.length;i++){
System.out.println(result[i].getName());
}
return 0;
}
private List createList(){
return new ArrayList();
}
}class ADTO{
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}另外toArray的另一种重载方式toArray(),里面不用些任何参数,这种用法我一直没有试出来。
ADTO[] result = (ADTO[])list.toArray(new ADTO[5]);
我发现toArray方法的参数无论写new ADTO[5]还是写new ADTO[4],或new ADTO[2],或new ADTO[0]结果都一样的。这是为什么呢?下面是具体的代码:
import java.util.ArrayList;
import java.util.List;public class HelloWorld{
public static void main(String[] args){
HelloWorld h = new HelloWorld();
h.exercise();
}
private int exercise(){
List list = createList();
for(int i=0;i<10;i++){
ADTO aDTO = new ADTO();
aDTO.setName(String.valueOf(i+"fuck"));
list.add(aDTO);
}
ADTO[] result = (ADTO[])list.toArray(new ADTO[0]);
for(int i=0;i<result.length;i++){
System.out.println(result[i].getName());
}
return 0;
}
private List createList(){
return new ArrayList();
}
}class ADTO{
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}另外toArray的另一种重载方式toArray(),里面不用些任何参数,这种用法我一直没有试出来。
关于问题1确实如你所说,那么是否可以认为最保险的写法就是toArray(new ADTO[0]),因为它不足会自己补。多了出null会比较麻烦。
问题2:那种不还参数的toArray()是list转成Object[]的数组,所以只能用Object中的方法了。
============================================================
请问这个Object[]的数组,我们定义的类不都是Object的子类吗?能给一个具体的用法吗?
如果我写ADTO[] result = (ADTO[])list.toArray();会报异常的