service用返回父类page用子类page接收 java
时间: 2023-08-02 07:11:33 浏览: 82
JSP父页面传参数到子页面及接收示例
如果您的 Service 返回的是一个父类对象分页结果(例如使用 MyBatis 分页插件),而您希望在使用该 Service 的地方将其转换为一个子类对象分页结果,可以使用 Java 8 中引入的流(Stream)和映射(map)方法来实现。
例如,如果您的 Service 返回的是一个 `Page<ParentClass>` 对象分页结果,而您希望将其中所有的对象转换为 `Page<ChildClass>` 对象分页结果,可以使用以下代码:
```java
Page<ParentClass> parentPage = myService.getSomeParentObjectsByPage();
Page<ChildClass> childPage = new Page<>();
childPage.setTotal(parentPage.getTotal());
childPage.setPages(parentPage.getPages());
childPage.setPageSize(parentPage.getPageSize());
childPage.setPageNum(parentPage.getPageNum());
List<ChildClass> childList = parentPage.stream()
.map(parent -> (ChildClass) parent)
.collect(Collectors.toList());
childPage.addAll(childList);
```
在上述代码中,我们首先创建一个空的 `Page<ChildClass>` 对象 `childPage`,然后将 `parentPage` 中的分页信息(总记录数、总页数、每页记录数、当前页码)复制到 `childPage` 中。然后我们使用 `stream()` 方法将 `parentPage` 中的记录转换为一个流,然后使用 `map()` 方法将流中的每个 `ParentClass` 对象转换为 `ChildClass` 对象。转换后的流中的每个对象都是 `ChildClass` 类型,然后我们使用 `collect()` 方法将流中的所有对象收集到一个列表中,并将其添加到 `childPage` 中。
需要注意的是,如果 `parentPage` 中包含的某个对象不是 `ChildClass` 对象,而是其它类型的 `ParentClass` 或其子类对象,那么上述代码可能会抛出 `ClassCastException` 异常。因此,在进行类型转换时,需要确保对象的实际类型是符合期望的子类类型。
阅读全文