无法在Comparator <string> </string> </string>中使用静态List <string>

时间:2014-07-24 21:16:51

标签: java generics comparator

为什么我必须在静态字段List

中完全限定java.lang.String
public static class MyComparator<String> implements Comparator<String> {

        public static List sortOrder;
        public static List<Integer> sortOrder2;
        public static List<java.lang.String> sortOrder3; // works!
        public static List<String> sortOrder4; // <-Compiler error only in this line


        @Override
        public int compare(String s1, String s2) {

            // TODO

            return -1;
        }
    }

错误是“无法对非静态类型字符串进行静态引用”

2 个答案:

答案 0 :(得分:13)

您已经定义了与该类名称相同的泛型类型参数String,因此String引用您的参数,而java.lang.String仍然有效。

从班级中删除它,但请将其保留在implements子句中。

public static class MyComparator implements Comparator<String> {

答案 1 :(得分:2)

替换:

public static class MyComparator<String> implements Comparator<String>

以其他一些与众不同的名字:

public static class MyComparator<S> implements Comparator<String>