如何将Array转换为ArrayList?我不知道这是否工作......任何人都可以帮助我

时间:2014-12-16 19:06:18

标签: java arrays arraylist

我是Java世界的新手。这是我的代码:

OrderElementRequest是一个保存订单元素细节的类。

OrderElementRequest[] orderElementRequest; //

中定义的数组类型

class OrderElementRequests有相同的setter和getter。

OrderElementRequests orderElementRequests; //在PlaceOrderRequest类中定义的OrderElementRequests类型,它具有相同的setter和getter。

List listElement = new ArrayList(Arrays.asList(placeOrderRequest.getOrderElementRequests()));
order.setLstOrderElement(listElement);     //order is an object of Order class which contains an Arraylist LstOrderElement of type OrderElement.

现在我想将OrderElementRequests的数组转换为List<OrderElement> LstOrderElement。 Nnow有一个警告:

  

类型安全:构造函数ArrayList(Collection)属于原始类型ArrayList。应该参数化泛型类型ArrayList。

这里有更多信息

公共类OrderProcessorImpl实现IOrderProcessor {

public void placeOrder(PlaceOrderRequest placeOrderRequest) throws Exception{       

    String URL="jdbc:oracle:thin:@localhost:1521:xe";
    String Uname="hr";
    String Pass="hr";
    Connection con=null;
    PreparedStatement prepairedSt=null;


    Order order=new Order();

    order.setOrderDescription(placeOrderRequest.getOrderDescription());
    order.setCreatedDate(placeOrderRequest.getOrderDate());         
    List<OrderElementRequests> listElement = new ArrayList(Arrays.asList(placeOrderRequest.getOrderElementRequests())); 
    order.setLstOrderElement(listElement);

。 。

公共类PlaceOrderRequest {

            String orderDescription;
            Date orderDate;
            OrderElementRequests orderElementRequests;              


            public String getOrderDescription() {
                return orderDescription;
            }
            public void setOrderDescription(String orderDescription) {
                this.orderDescription = orderDescription;
            }.......

公共类OrderElementRequests {

        OrderElementRequest[] orderElementRequest;

        public OrderElementRequest[] getOrderElementRequest() {
            return orderElementRequest;
        }

        public void setOrderElementRequest(OrderElementRequest[] orderElementRequest) {
            this.orderElementRequest = orderElementRequest;
        }

} 公共类OrderElementRequest {

                String Order_item_name;
                BigDecimal order_item_price;
                Date CreatedDate;
                OrderElementAttributeRequests  orderElementAttributeRequests;       


                public OrderElementAttributeRequests getOrderElementAttributeRequests() {
                    return orderElementAttributeRequests;
                }
                public void setOrderElementAttributeRequests(
                        OrderElementAttributeRequests orderElementAttributeRequests) {
                    this.orderElementAttributeRequests = orderElementAttributeRequests;
                }

...

公共课程订单{

String orderId;
String orderNumber;
BigDecimal orderTotal;
String orderDescription;
Date createdDate;
Date updatedDate;

        List<OrderElement> lstOrderElement = new ArrayList<OrderElement>();

                    public void setLstOrderElement(List<OrderElement> elements){
                        this.lstOrderElement = elements;
                    }
                    public List<OrderElement> getLstOrderElement(){
                        return lstOrderElement;
                    }

.......

3 个答案:

答案 0 :(得分:4)

您需要使用generics以确保您的List包含正确类型的元素。您看到的消息警告您,您正在构建的ArrayList可能会不安全地保留任何类型,而不仅仅是OrderElementRequest。在编译时使用泛型来防止这种情况。

List<OrderElementRequest> listElement = new ArrayList<>(Arrays.asList(...));

答案 1 :(得分:1)

您应该将类​​型添加到您的arraylist中,以便它知道会发生什么:

List<OrderElementRequest> listElement = new ArrayList<OrderElementRequest>(Arrays.asList(placeOrderRequest.getOrderElementRequests()));

执行此操作将阻止编译时警告,因为您已告知编译器此列表中的内容。它不是必需的,但它有助于防止代码出现问题(例如将不同类型的对象添加到同一列表中)。

答案 2 :(得分:1)

开始使用Java 5.0中引入的generics long 时间之前),而不是坚持使用Java 1.4样式编码......

List<YourObjectType> listElement = Arrays.asList(array);

应该有效,以及

List<YourObjectType> listElement = new ArrayList<>(Arrays.asList(array));

复制ArrayList。第一个是数组支持列表,不允许插入;但反过来会反映对数组的更改。)