当前位置: 首页 > 知识库问答 >
问题:

Java泛型绑定不匹配

段干长恨
2023-03-14

下面是一个通用搜索算法的实现:

接口:

public interface Comparable<T extends Comparable<T>> {
    int compare(T arg); 
}
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>();

(方括号=弧形括号)

问题出在哪里?我想不通...对泛型参数T也进行了扩展。

共有1个答案

公孙宸
2023-03-14

与其创建自己的carable,而不是创建string不实现的carable,不如使用Java的java.lang.carablestring实现。

 类似资料:
  • 应该如何声明“GenericBo Bo”实例?正确的代码是什么?

  • 我有2个抽象的类操纵泛型和一个工厂与泛型。父级独立于trips对象和因式分解代码。儿子只基于trips。 Eclipse上的AbstractTripBasedPurchaseExtractor第9行出现错误:Bound mismatch:类型TRIP_PURCHASE不是bounded参数的有效替代品 类型的 此处:extends AbstractPurchaseExtractor“ 在son类上

  • 问题内容: 与完全跳过它们相比,在类中使用通配符类型的泛型有什么优势吗? 问题答案: 有很多优点。 他们不会像使用原始类型那样产生编译器警告 它们提供了更多的类型安全性。例如,考虑是否是。如果您使用代替,则可以执行以下操作: 即使该列表仅 应 包含s。如果返回,则您将无法添加 任何 内容(除外),因为列表类型未知。 他们记录的东西与原始类型完全不同,即使用某种 未知但特定的类型进行输入 。

  • 我正面临以下问题: “链”来自ViewModelHelper类定义 2) 2.1),->可以用替换 如果我将2.1)应用于1.1)&1.2),我们可以看到,参数T是一致的 从1)遵循从2)遵循,从2.1)遵循可以被替换,如果我正确理解,这个错误应该不会出现,有人能解释一下吗?为什么eclipse会给我这个错误? 谢谢!

  • 绑定不匹配:类型的泛型方法不适用于参数()。推断的类型不是有界参数的有效替代品。 使用以下代码: 为什么这个无效?扩展,那么为什么与不匹配呢? 我如何约束element()方法接受资源类对象或任何资源子类对象作为参数?