[英]Java Generics Bound mismatch
这是通用搜索算法的实现:
界面:
public interface Comparable<T extends Comparable<T>> {
int compare(T arg);
}
CompareSort.java
public abstract class CompareSort<T extends Comparable<T>> {
protected boolean less(T v, T w) {
return (v.compare(w) < 0);
}
protected void swap(T[] args, int i, int j) {
T swap = args[i];
args[i] = args[j];
args[j] = swap;
}
public abstract void sort(T[] args);
}
算法之一:
public class SelectionSort <T extends Comparable<T>> extends CompareSort<T> {
@Override
public void sort(T[] args) {
int N = args.length;
for (int i = 0; i < N; i++) {
int min = i;
for (int j = i + 1; j < N; j++) {
if (less(args[j], args[min])) {
min = j;
}
}
swap(args, i, min);
}
}
}
最后是排序字符串的主要方法。
public class StringSorter {
public static <T extends Comparable<T>> void main(String[] args) throws IOException {
ArrayList<String> list = new ArrayList<String>();
int i = 0;
while (i < 10) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
list.add(str);
i++;
}
String[] a = list.toArray(new String[list.size()]);
// Create a sort object, use it on a, and print the sorted array.
SelectionSort<String> selection = new SelectionSort<String>();
selection.sort(a);
for (i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
这是问题所在:
SelectionSort<String> selection = new SelectionSort<String>();
绑定不匹配:字符串类型不是类型SelectionCort(T)的绑定参数(T扩展Comparable(T)的有效替代)
(方括号=弯曲括号)
问题出在哪儿? 我不知道...通用参数T也被扩展了。
与其创建自己的Comparable
,而不是 String
不能实现 , 而是使用Java的java.lang.Comparable
,而String
可以实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.