将ArrayList <String>转换为java.util.List

joh*_*ohn 4 java arrays gwt arraylist

我无法绕过一个概念.我正在尝试将a转换ArrayList<String>List(或List<String>),但我一直遇到强制转换异常.是的,我看到了将字符串数组转换为列表的代码,但我觉得这是一个不同的场景.我的相关代码在这里,请注意声明是因为我使用GWT,因此必须声明一些东西为静态和最终...

private static List<String> values;
Ioma.dataservice.getPendingOrders(new AsyncCallback<ArrayList<Order>>(){
    @Override
    public void onFailure(Throwable caught) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onSuccess(ArrayList<Order> result) {
        ArrayList<String> orderNumbers = new ArrayList<String>();               
        //problem here, cannot cast arraylist<string> to list string for some reason? idk. SO it maybe?
        for(int i=0;i<result.size();i++){
            System.out.println("ordernumber: " + result.get(i).getOrderNumber());
            System.out.println("arraysize: " + result.size());
            orderNumbers.add(Integer.toString(result.get(i).getOrderNumber()));                 
        }
        for (int i=0; i<orderNumbers.size();i++){
            values.add(orderNumbers.get(i));
        }
        cellList.setRowData(values);
    }

});
Run Code Online (Sandbox Code Playgroud)

基本上我正在尝试创建一个想要List作为输入的cellList.我从数据库查询中获取了一个订单数组列表,然后迭代以获取订单号,然后将其放入arrayList中,然后我想将其转换为List以在cellList中使用.有人可以解释为什么我不能这样做以及适当的方法应该是什么?

Ale*_*lex 17

我不明白你有一个,因为这一问题ArrayList实现了ListList作为一个接口.

你可以改变这一行

ArrayList<String> orderNumbers = new ArrayList<String>(); 
Run Code Online (Sandbox Code Playgroud)

至:

List<String> orderNumbers = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

  • @Alex - 对于使用GWT的项目,这不是一个好建议,特别是对于GWT-RPC.来自[Google的开发人员指南](https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication#DevGuideRemoteProcedureCalls):"为了充分利用多态性,您仍应尽量使用您的设计允许在定义服务接口时.增加的特异性允许编译器在优化应用程序以减小尺寸时更好地删除不必要的代码."_ (3认同)

Ted*_*opp 5

AnArrayList<anything>已经是 a List<anything>,因为ArrayList实现了List接口。不需要铸造。