无法找到转换排序方法使用泛型的错误

时间:2013-11-07 20:54:33

标签: java generics

我有一个练习要解决,但我无法理解它。所以问题是:以下程序按升序打印一系列字符串。观察该排序仅对字符串数组进行排序。重写它以便它对类型为T的对象进行排序,其中T作为泛型类型名称在sort头中引入,T实现Comparable。更改应限于修改排序的标题和正文。所以我给出的代码是:

class SortNames {

static void sort(String[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                String t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
            }
    }
}

public static void main(String[] args) {
    String[] names = {"Pete","Jill","May","Anne","Tim"};             
    sort(names);
    for (String s:names){ 
        System.out.println(s);
    }
}

所以我做的是:

class TestSort{

static void sort(T[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                Object t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
    }
    }
}

public static void main(String[] args) {
    int[] numbers = {3,6,2,7,9,1,8};
    sort(numbers);
    for (int a:numbers){ 
        System.out.println(a);
     }
}

现在,当我编译代码时,我得到了:

TestSort.java:3: error: cannot find symbol
static void sort(T[] s) {
                 ^
symbol:   class T
location: class TestSort
1 error

有什么问题? :(任何人都可以推荐我一些很好的阅读资源吗?我明天就考试了:(提前致谢!

1 个答案:

答案 0 :(得分:4)

您需要在T方法上定义通用变量sort,使其成为通用变量。 T作为数据类型仅引用泛型类型参数。

static <T extends Comparable<T>> void sort(T[] s) {