categories = categories.stream() .filter(category -> SystemConstants.CATEGORY_STATUS_NORMAL.equals(category.getStatus())) .collect(Collectors.toList());java: 无法取消引用int
时间: 2024-03-25 16:38:30 浏览: 15
这个错误通常是因为你试图将一个 `int` 类型的变量转换为一个对象类型。这个错误通常在 Java 8 的 Lambda 表达式中出现,因为 Lambda 表达式中的变量类型通常是根据上下文推断出来的。
在这个特定的代码片段中,问题可能出现在 `category.getStatus()` 方法的返回类型上。你需要确保它返回一个对象类型,而不是基本类型 `int`。如果 `getStatus()` 方法返回基本类型 `int`,你可以将其转换为对象类型,例如 `Integer`,如下所示:
```
categories = categories.stream()
.filter(category -> SystemConstants.CATEGORY_STATUS_NORMAL.equals(Integer.valueOf(category.getStatus())))
.collect(Collectors.toList());
```
这样做会将 `int` 类型的返回值转换为 `Integer` 类型,从而解决编译错误。
相关问题
deliveryInfo = infoList.get(0); if(infoList.size() > 1) { deliveryInfo = infoList.stream().filter(e->e.getStatus().equals(0)).findFirst().get(); } 简化
这段代码可以简化为:
```
deliveryInfo = infoList.stream()
.filter(e -> e.getStatus() == 0)
.findFirst()
.orElse(infoList.get(0));
```
这样可以避免使用 `if` 语句,而是使用 `orElse` 方法来处理不存在符合条件的元素的情况。同时也可以使用 `==` 替代 `equals` 来进行比较,因为 `getStatus()` 方法返回的应该是一个基本类型的数值。如果不存在符合条件的元素,则返回列表中的第一个元素。
if(infoList.size() >0) { deliveryInfo = infoList.stream() .filter(e -> e.getStatus() == 0) .findFirst() .orElse(infoList.get(0)); } 简化
这段代码可以简化为:
```
deliveryInfo = infoList.stream()
.filter(e -> e.getStatus() == 0)
.findFirst()
.orElseGet(() -> infoList.get(0));
```
这样可以避免使用 `if` 语句,而是使用 `orElseGet` 方法来处理不存在符合条件的元素的情况。同时也可以使用 `==` 替代 `equals` 来进行比较,因为 `getStatus()` 方法返回的应该是一个基本类型的数值。如果不存在符合条件的元素,则返回列表中的第一个元素。此处使用 `orElseGet` 方法代替 `orElse` 方法,可以在不存在符合条件的元素时避免不必要的对象创建。