productList 返回的是一个 Page 对象,Page 对象的声明: 可见 Page 继承自 ArrayList,所以 Page 对象是一个 List。 再来看看 PageInfo 的构造函数的源码: public PageInfo(List<T> list) { this(list, 8); } public PageInfo(List<T> list, int navigatePages) { if (list instanceof Page) { Page page = (Page) list; this.pageNum = page.getPageNum(); this.pageSize = page.getPageSize(); this.pages = page.getPages(); this.list = page; this.size = page.size(); this.total = page.getTotal(); if (this.size == 0) { this.startRow = 0; this.endRow = 0; } else { this.startRow = page.getStartRow() + 1; this.endRow = this.startRow - 1 + this.size; } } else if (list instanceof Collection) { this.pageNum = 1; this.pageSize = list.size(); this.pages = this.pageSize > 0 ? 1 : 0; this.list = list; this.size = list.size(); this.total = list.size(); this.startRow = 0; this.endRow = list.size() > 0 ? list.size() - 1 : 0; } ... } 关注第一个 if (list instanceof Page),可见如果当传入的 List 对象是一个 Page 的时候,可以直接通过这个 Page 对象来获得相关的分页信息。所以,这段代码,作者的意思应该是先通过 productList 这个 Page 对象来设置 PageInfo 的分页信息,然后再通过 setList 方法来改变具体的数据,从而 使得 PageInfo 中既有原来的分页信息,然后数据又是 VO 对象。
productList 返回的是一个

Page
对象,Page
对象的声明:可见
Page
继承自ArrayList
,所以Page
对象是一个List
。再来看看
PageInfo
的构造函数的源码:关注第一个
if (list instanceof Page)
,可见如果当传入的List
对象是一个Page
的时候,可以直接通过这个 Page 对象来获得相关的分页信息。所以,这段代码,作者的意思应该是先通过 productList 这个 Page 对象来设置PageInfo
的分页信息,然后再通过setList
方法来改变具体的数据,从而 使得PageInfo
中既有原来的分页信息,然后数据又是VO
对象。