gpt4 book ai didi

java.lang.UnsupportedOperationException(无法将 arraylist 添加到列表)

转载 作者:行者123 更新时间:2023-11-29 06:27:08 24 4
gpt4 key购买 nike

我正在尝试将 ArrayList 添加到 ListgetSalesOrderitm() 是 Salesorder 项目列表。

Criteria cr = session.createCriteria(SalesOrder.class);
cr.add(Restrictions.ge("date", new SimpleDateFormat("yyyy/MM/dd").parse(fdate)));
cr.add(Restrictions.le("date", new SimpleDateFormat("yyyy/MM/dd").parse(tdate)));
List<SalesOrder> orderList = cr.list();
List<SalesOrderItem> itemList = Collections.EMPTY_LIST;
double totalAmount = 0.00;
for (SalesOrder salesOrder : orderList) {
itemList.addAll(salesOrder.getSalesorderyitm());
}

下面你可以看到Salesorder类中的hibernate映射

@OneToMany(targetEntity=SalesOrderItem.class,mappedBy="salesorder",fetch=FetchType.LAZY)
public List<SalesOrderItem> getSalesorderyitm() {
return salesorderyitm;
}
public void setSalesorderyitm(List<SalesOrderItem> salesorderyitm) {
this.salesorderyitm = salesorderyitm;
}

下面你可以看到salesOrderItem类中的hibernate映射

@ManyToOne
@JoinColumn(name="SOI_SalesOrderId")
public SalesOrder getSalesorder() {
return salesorder;
}
public void setSalesorder(SalesOrder salesorder) {
this.salesorder = salesorder;
}

我得到低于错误

java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at java.util.AbstractCollection.addAll(AbstractCollection.java:342)

最佳答案

正如@yassadi 已经在其中一条评论中指出的,您的代码中有问题的部分是这一行:

List<SalesOrderItem> itemList = Collections.EMPTY_LIST;

只需将此行更改为

List<SalesOrderItem> itemList = new ArrayList<>();

大功告成。

JavaDocs 中所述Collections.EMPTY_LISTCollections.emptyList() 是/返回不可变 列表。那就是你不能删除(好吧,这不是空列表的真正问题)或向该列表添加元素。 Collections 类提供的这些辅助方法更多地用作默认返回值,您希望通过分配新实例来避免(内存)开销,如果只对集合为空这一事实感兴趣的话.

不可变特性实际上对Collections类中的一堆方法/成员有效(emptyList, singletonList,emptyMap , singletonMap, ...)。在使用这些辅助方法时,始终需要牢记这一点。

当使用 Collections 的静态成员时,例如 EMPTY_LISTEMPTY_MAP 等,您可能会注意到编译器警告

Type safety: The expression of type List needs unchecked conversion to conform to List

这是由于缺少静态成员的类型推断。通过使用相应的方法,例如 Collections.emptyList(),将自动推断出正确的泛型类型(emptyList 只是转换为所需的类型),您将摆脱这种情况烦人的警告,无需向您的代码添加大量样板转换。也就是说,除非您想要 Java 1.5 之前的兼容性,否则 helper 方法应该始终优先于成员方法,但这些时代现在有望结束。

参见 What is the difference between Collections.emptyList() and Collections.EMPTY_LIST

关于java.lang.UnsupportedOperationException(无法将 arraylist 添加到列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com