我是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;
}
.......
答案 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
。第一个是数组支持列表,不允许插入;但反过来会反映对数组的更改。)