为了账号安全,请及时绑定邮箱和手机立即绑定

Java泛型问题,在编译时,提示警告: 需要: List<T>

Java泛型问题,在编译时,提示警告: 需要: List<T>

杨魅力 2019-03-20 14:13:29
错误提示:++++++++++警告: [unchecked] 方法调用未经过检查: 将类 Collections中的方法 sort应用到给定的类型Collections.sort(books);                ^需要: List<T>找到: List<BookDetails>其中, T是类型变量:T扩展已在方法 <T>sort(List<T>)中声明的Comparable<? super T>1 个警告++++++++++下面是源代码:  public Collection<BookDetails> getBooks()throws Exception{    Connection con=null;    PreparedStatement prepStmt=null;    ResultSet rs =null;    List<BookDetails> books = new ArrayList<BookDetails>();    try {      con=getConnection();      String selectStatement = "select * " + "from BOOKS";      prepStmt = con.prepareStatement(selectStatement);      rs = prepStmt.executeQuery();      while (rs.next()) {        BookDetails bd = new BookDetails(rs.getString(1), rs.getString(2), rs.getString(3),           rs.getFloat(4), rs.getInt(5), rs.getString(6),rs.getInt(7));        books.add(bd);      }    }finally{      closeResultSet(rs);      closePrepStmt(prepStmt);      closeConnection(con);    }        Collections.sort(books);           // 出现警告的地方    return books;  }问题: 这是什么原因?T不是只是一个类型符号吗?为什么必须要找到List<T>?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

 public static <T extends Comparable<? super T>> void sort(List<T> list) {

        Object[] a = list.toArray();

        Arrays.sort(a);

        ListIterator<T> i = list.listIterator();

        for (int j=0; j<a.length; j++) {

            i.next();

            i.set((T)a[j]);

        }

    }

需要注意这里:T extends Comparable<? super T>


查看完整回答
反对 回复 2019-04-19
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

应该是你java版本过低。java1.5以上版本支持@SuppressWarning注解


查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 1482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信