类在jar包里,不方便直接修改类.. 想自定义一个类继承那个类 增加属性:
public class Page<E> extends ArrayList<E> {
/**
* 不进行count查询
*/
private static final int NO_SQL_COUNT = -1;
/**
* 进行count查询
*/
private static final int SQL_COUNT = 0;
private int pageNum;
private int pageSize;
private int startRow;
private int endRow;
private long total;
private int pages;
public Page(int pageNum, int pageSize) {
this(pageNum, pageSize, SQL_COUNT);
}
public Page(int pageNum, int pageSize, boolean count) {
this(pageNum, pageSize, count ? Page.SQL_COUNT : Page.NO_SQL_COUNT);
}
public Page(int pageNum, int pageSize, int total) {
super(pageSize > -1 ? pageSize : 0);
this.pageNum = pageNum;
this.pageSize = pageSize;
this.total = total;
this.startRow = pageNum > 0 ? (pageNum - 1) * pageSize : 0;
this.endRow = pageNum * pageSize;
}
public Page(RowBounds rowBounds, boolean count) {
this(rowBounds, count ? Page.SQL_COUNT : Page.NO_SQL_COUNT);
}
public Page(RowBounds rowBounds, int total) {
super(rowBounds.getLimit() > -1 ? rowBounds.getLimit() : 0);
this.pageSize = rowBounds.getLimit();
this.startRow = rowBounds.getOffset();
//RowBounds方式默认不求count总数,如果想求count,可以修改这里为SQL_COUNT
this.total = total;
this.endRow = this.startRow + this.pageSize;
}
//getter and setter
@Override
public String toString() {
return "Page{" +
"pageNum=" + pageNum +
", pageSize=" + pageSize +
", startRow=" + startRow +
", endRow=" + endRow +
", total=" + total +
", pages=" + pages +
'}';
}
}
这是一个分页类,我想增加两个属性:
private int nextPage;
private int previousPage;
自定义一个类来继承:
public class PagePlus<E> extends Page<E> {
private int nextPage;
private int previousPage;
public PagePlus(int pageNum, int pageSize) {
super(pageNum, pageSize);
this.nextPage = super.getPageNum() + 1;
this.previousPage = super.getPageNum() - 1;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public int getPreviousPage() {
return previousPage;
}
public void setPreviousPage(int previousPage) {
this.previousPage = previousPage;
}
}
程序中是这样写的:
@Override
public PagePlus<Article> list(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
PagePlus<Article> page = (PagePlus<Article>) articleDao.list();
return page;
}
articleDao.list 返回的是Listjava.lang.ClassCastException: com.github.pagehelper.Page cannot be cast to util.PagePlus
请问是哪里写的有问题?
报错的信息不是说的很详细吗,Page不能直接转化为PagePlus.
因为一个PagePlus是一个Page,但一个Page不一定是一个PagePlus,不能downcast.
解决的方法之一:给PagePlus写一个构造函数,接受一个Page,
public PagePlus(Page page) {
this(page.getPageNum(), page.getPageSize());
this.pages = page.getPages();
//... 省略
}
将articleDao.list()返回的page构造为一个PagePlus再返回
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。