Java泛型问题,在编译时,提示警告: 需要: List 找到: List

xiayiguo 2016-06-11 08:50:09
错误提示:
++++++++++
警告: [unchecked] 方法调用未经过检查: 将类 Collections中的方法 s
ort应用到给定的类型

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>?
...全文
623 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiayiguo 2016-06-14
  • 打赏
  • 举报
回复
引用 7 楼 windowsoahil 的回复:
[quote=引用 6 楼 xiayiguo 的回复:] [quote=引用 4 楼 windowsoahil 的回复:] 类型推断警告,可能是你还是什么地方没有添加泛型; 完整的类声明类似下面这种
class BookDetails implements Comparable<BookDetails>
如果还是警告,也可以手动指定参数类型来代替类型推断:
Collections.<BookDetails>sort(books);
非常谢谢大神,已经搞定了,本人初学者,之前看java编程思想,在泛型中好多知识点都看不太明白,其中就包括类型推断,请问大神,是不是随着经验的积累,对于泛型的理解会好一点,在实际工作中,泛型用到的地方多吗?[/quote] 只要你不是写框架,用不着太复杂的,而且推断机制始终可以用手动指定代替,不用强求。不过泛型类和泛型方法要会设计,这是基础。有时候会有重构Spring代码这种需求,写成的代码也要尽量遵循java规范。[/quote] 好的,真是谢谢您了!
解开者 2016-06-14
  • 打赏
  • 举报
回复
引用 6 楼 xiayiguo 的回复:
[quote=引用 4 楼 windowsoahil 的回复:] 类型推断警告,可能是你还是什么地方没有添加泛型; 完整的类声明类似下面这种
class BookDetails implements Comparable<BookDetails>
如果还是警告,也可以手动指定参数类型来代替类型推断:
Collections.<BookDetails>sort(books);
非常谢谢大神,已经搞定了,本人初学者,之前看java编程思想,在泛型中好多知识点都看不太明白,其中就包括类型推断,请问大神,是不是随着经验的积累,对于泛型的理解会好一点,在实际工作中,泛型用到的地方多吗?[/quote] 只要你不是写框架,用不着太复杂的,而且推断机制始终可以用手动指定代替,不用强求。不过泛型类和泛型方法要会设计,这是基础。有时候会有重构Spring代码这种需求,写成的代码也要尽量遵循java规范。
xiayiguo 2016-06-14
  • 打赏
  • 举报
回复
引用 4 楼 windowsoahil 的回复:
类型推断警告,可能是你还是什么地方没有添加泛型; 完整的类声明类似下面这种
class BookDetails implements Comparable<BookDetails>
如果还是警告,也可以手动指定参数类型来代替类型推断:
Collections.<BookDetails>sort(books);
非常谢谢大神,已经搞定了,本人初学者,之前看java编程思想,在泛型中好多知识点都看不太明白,其中就包括类型推断,请问大神,是不是随着经验的积累,对于泛型的理解会好一点,在实际工作中,泛型用到的地方多吗?
xiayiguo 2016-06-14
  • 打赏
  • 举报
回复
引用 4 楼 windowsoahil 的回复:
类型推断警告,可能是你还是什么地方没有添加泛型; 完整的类声明类似下面这种
class BookDetails implements Comparable<BookDetails>
如果还是警告,也可以手动指定参数类型来代替类型推断:
Collections.<BookDetails>sort(books);
非常谢谢大神,已经没有搞定了,本人初学者,之前看java编程思想,在泛型中好多知识点都看不太明白,其中就包括类型推断,请问大神,是不是随着经验的积累,对于泛型的理解会好一点,在实际工作中,泛型用到的地方多吗?
xiayiguo 2016-06-12
  • 打赏
  • 举报
回复
引用 1 楼 skgary 的回复:
BookDetails 有没有实现 Comparable接口呢?
不好意思,大神刚才发错了,确实实现了Comparable接口,那请问Comparable接口与这个与什么关系了?
xiayiguo 2016-06-12
  • 打赏
  • 举报
回复
引用 1 楼 skgary 的回复:
BookDetails 有没有实现 Comparable接口呢?
没有实现Comparable接口,请问,这个comparable接口与这边有什么关系?
skgary 2016-06-12
  • 打赏
  • 举报
回复
BookDetails 有没有实现 Comparable接口呢?
解开者 2016-06-12
  • 打赏
  • 举报
回复
类型推断警告,可能是你还是什么地方没有添加泛型; 完整的类声明类似下面这种
class BookDetails implements Comparable<BookDetails>
如果还是警告,也可以手动指定参数类型来代替类型推断:
Collections.<BookDetails>sort(books);

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧