说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

100分等你来拿~~~~~~~~解决就给分!!!

编辑:说三道四文库 发布时间:2018-06-19 02:48
HTML文档下载 WORD文档下载 PDF文档下载
/*在运行下面代码时报错,PageableResultSet2.java:6: PageableResultSet2 is not abstract and does not overr
ide abstract method getTimestamp(java.lang.String,java.util.Calendar) in java.sql.ResultSet
public class PageableResultSet2 implements Pageable1 {
       ^
1 error
*/
//abstract 意思是要求我重载抽象方法吧!可是我重载了N个还没重载完,火了~~~
//PageableResultSet2.java
import java.sql.*;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.lang.*;
import java.util.*;
public class PageableResultSet2 implements Pageable1 {
    protected java.sql.ResultSet rs=null;
    protected int rowsCount;
    protected int pageSize;
    protected int curPage;
    protected String command = "";

//只有在Pageable接口中新增的方法才需要自己的写方法处理
/**方法注释可参考Pageable.java
*/
public int getCurPage() {
    return curPage;
}
public int getPageCount() {
    if(rowsCount==0) return 0;
    if(pageSize==0) return 1;
    //calculate PageCount
    double tmpD=(double)rowsCount/pageSize;
    int tmpI=(int)tmpD;
    if(tmpD>tmpI) tmpI++;
    return tmpI;
}
public int getPageRowsCount() {
    if(pageSize==0) return rowsCount;
    if(getRowsCount()==0) return 0;
    if(curPage!=getPageCount()) return pageSize;
    return rowsCount-(getPageCount()-1)*pageSize;
}
public int getPageSize() {
    return pageSize;
}
public int getRowsCount() {
    return rowsCount;
}
public void gotoPage(int page) {
    if (rs == null)
        return;
    if (page < 1)
        page = 1;
    if (page > getPageCount())
        page = getPageCount();
    int row = (page - 1) * pageSize + 1;
    try {
        rs.absolute(row);
        curPage = page;
    }
    catch (java.sql.SQLException e) {
    }
}
public void pageFirst() throws java.sql.SQLException {
    int row=(curPage-1)*pageSize+1;
    rs.absolute(row);
}
public void pageLast() throws java.sql.SQLException {
    int row=(curPage-1)*pageSize+getPageRowsCount();
    rs.absolute(row);
}
public void setPageSize(int pageSize) {
    if(pageSize>=0){
        this.pageSize=pageSize;
        curPage=1;
    }
}  
//PageableResultSet2的构造方法:
public PageableResultSet2(java.sql.ResultSet rs) throws java.sql.SQLException {
    if(rs==null) throw new SQLException("given ResultSet is NULL","user");
    
    rs.last();
    rowsCount=rs.getRow();
    rs.beforeFirst();
    
    this.rs=rs;
}
}
同意楼上的说法。
需要实现所有的抽象方法,否则子类也是abstract
原文中已经提到了呀,这不过是人家中间省略了N多个你要实现的方法,还有哪些方法你可以查jdk的API,多着呢!!

  PageableResultSet2中继承自ResultSet的主要方法:
//……
public boolean next() throws SQLException {
    return rs.next();
}
//……
public String getString(String columnName) throws SQLException {
    try {
        return rs.getString(columnName);
    }
    catch (SQLException e) {//这里是为了增加一些出错信息的内容便于调试
        throw new SQLException (e.toString()+" columnName="
            +columnName+"\r\nSQL="+this.getCommand());
    }
}
//……  
晕,,,抽象方法在接口里面的是要全部实现的啊
即使是空方法也ok啊
关于windowlistener就是例子....
关于模式里面有adapter你可以参考
晕倒,为什么要重载,那么多方法不得累死。用组合不用继承
up
你的Pageable为什么要 extends ResultSet呢?没这个必要,因为你在页面中只需要使用Pageable接口而不会用到任何ResultSet的方法,扩展了ResultSet已大大降低了Pageable接口的扩展性!
你要把抽象类里的所有公开方法全部实现一下才可以使用,这是必须的。可以光写个方法名放着。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘