2011-09-15 62 views
0

我正在使用java。
我有一个ArrayList<foo> myList,我尝试将其转换为数组。来自阵列列表的Java动态矩阵

Foo[] myArray = (Foo[])myList.toArray(); 

在eclipse中,我得到的错误对象不能转换为foo。

任何解决方案?我试图使用动态分配的矩阵,因为我必须应用某种类型,所以ArrayList是不够的。

回答

3
Foo[] myArray = myList.toArray(new Foo[myList.size()]); 
+0

'myList.toArray(新的Foo [0])'是足够 –

+0

当然是不够的。但是有了它,将会创建空数组,并测试它不适合并创建另一个适合的数组。什么为这个空阵列?为了减少非性能关键位置的代码量? –

1

我不知道你的矩阵,它通常用来指一个二维数组,但撇开这一边的意思:如果你只需要调用toArray()这样的,不带任何参数,该返回的数组不会是Foo[],它将是包含您的Foo对象的Object[]。您需要使用的toArray()其他的版本,可以让你提供你自己的数组对象,像这样的一个:

Foo[] myArray = myList.toArray(new Foo[myList.size()]); 
+0

由矩阵我的意思是矢量,对不起 –

1
Foo[] myArray = (Foo[])myList.toArray(new Foo[myList.size()]); 
+1

你不需要投 – epoch

1

我希望这可以帮助。

import java.util.ArrayList; 

公共类主要{

public static void main(String[] args) { 

    // TODO Auto-generated method stub 
    ArrayList<String> myList = new ArrayList<String>(); 
    String s="hello"; 
    String r="world"; 
    myList.add(s); 
    myList.add(r); 
    String[] newList = myList.toArray(new String[0]); 
    System.out.println(newList[0]+" "+newList[1]); 

} 

}