Java Collections.sort - 帮我删除未经检查的警告

emu*_*ahy 10 java generics comparator apache-commons-beanutils

List<Question> questions = new ArrayList<Question>();
questions.addAll(getAllQuestions()); //returns a set of Questions
Collections.sort(questions, new BeanComparator("questionId")); //org.apache.commons.beanutils.BeanComparator
Run Code Online (Sandbox Code Playgroud)

在Java 1.5下,上述工作正常,只是'new BeanComparator("questionId")'生成一个未经检查的警告.我不喜欢警告.有没有办法可以为BeanComparator提供一个类型,还是我必须使用@SuppressWarnings("unchecked")

Ste*_*n C 10

选项包括:

  • 改变BeanComparator实施Comparator<Question>.这不是一个真正的选择,因为它是一个众所周知的外部库类.人们不会让你这样做.
  • 分叉并修改BeanComparator如上,给它一个不同的FQN.
  • BeanComparator用实现的类包装现有的Comparator<Question>.
  • 改变的类型questionsList<?>.
  • 添加抑制警告注释.

  • 嗯,是.但在这样的情况下,你可以百分百肯定.如果你犯了一个错误,你将得到的最糟糕的是一个意想不到的地方的ClassCastException. (3认同)

Han*_*Gay 5

由于BeanComparator不是通用的,你只需要压制.

更新:实际上,如果它足够困扰你,你可以分叉代码库使它成为通用的,因为它是开源的.