gpt4 book ai didi

Java 泛型绑定(bind)不匹配

转载 作者:行者123 更新时间:2023-12-01 17:08:00 24 4
gpt4 key购买 nike

这是通用搜索算法的实现:

界面:

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>();

Bound mismatch: The type String is not a valid substitute for the bounded parameter (T extends Comparable(T)) of the type SelectionSort(T)

(方括号 = 弯括号)

问题出在哪里?我想不明白...通用参数 T 也被扩展。

最佳答案

不要创建自己的 Comparable(String 没有实现),而是使用 Java 的 java.lang.Comparable >,String确实实现了。

关于Java 泛型绑定(bind)不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com