作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在将一个应用程序转换为使用 Java 1.5,并且发现了以下方法:
/**
* Compare two Comparables, treat nulls as -infinity.
* @param o1
* @param o2
* @return -1 if o1<o2, 0 if o1==o2, 1 if o1>o2
*/
protected static int nullCompare(Comparable o1, Comparable o2) {
if (o1 == null) {
if (o2 == null) {
return 0;
} else {
return -1;
}
} else if (o2 == null) {
return 1;
} else {
return o1.compareTo(o2);
}
}
理想情况下,我想让该方法接受两个相同类型的 Comparables,是否可以转换它以及如何转换?
我认为以下方法可以解决问题:
protected static <T extends Comparable> int nullCompare(T o1, T o2) {
但它未能消除 IntelliJ 中的警告“未经检查的调用 'compareTo(T)' 作为原始类型 'java.lang.Comparable' 的成员”:
return o1.compareTo(o2);
最佳答案
将其更改为:
protected static <T extends Comparable<T>> int nullCompare(T o1, T o2) {
你需要它,因为 Comparable 本身就是一个通用类型。
关于java - 我可以将以下代码转换为使用泛型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107/
我是一名优秀的程序员,十分优秀!