java中给类增加属性的问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

java中给类增加属性的问题

2016-02-29 15:47:53 3916 1

类在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 返回的是List
java.lang.ClassCastException: com.github.pagehelper.Page cannot be cast to util.PagePlus
请问是哪里写的有问题?

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:50:24

    报错的信息不是说的很详细吗,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再返回

    0 0
相关问答

1

回答

JAVA中对类和接口名通常遵守什么约定呢?

2021-10-31 20:08:17 124浏览量 回答数 1

1

回答

当Java程序首次如何使用某个类或接口就会初始化?

2020-04-12 19:29:47 783浏览量 回答数 1

0

回答

请问java中使用BigDecimal加法操作,有没有性能更快的方法?

2021-11-07 15:24:38 169浏览量 回答数 0

1

回答

java中将JSON数据key及对应value转换为数组性能最快的做法是什么?

2021-11-06 20:10:19 164浏览量 回答数 1

3

回答

[@talishboy][¥20]java中,final作用:不能被改变;不能被继承;提高效率为什么大多数方法不加它来提升性能呢?

2018-12-14 22:49:19 2109浏览量 回答数 3

1

回答

[@徐雷frank][¥20]面对双11流量阿里在java方面做了哪些性能的优化,比如说底层硬件、应用本身架构,java虚拟机本身等?

2018-12-07 14:45:26 1373浏览量 回答数 1

2

回答

[@徐雷frank][¥20]java print打印,返回值1,性能没有。 php echo打印 无返回值,是否java性能不如php?

2018-12-07 13:46:18 1586浏览量 回答数 2

2

回答

Hbase的写入性能如何?内核是基于Java实现的?

2018-11-22 22:20:05 1486浏览量 回答数 2

1

回答

数据库聚合函数avg()和取出来用java算 请问哪个性能更高?

2016-03-04 15:22:21 2684浏览量 回答数 1

1

回答

数据库聚合函数avg和取出来用java算的性能高低

2016-02-13 17:34:42 2386浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载