为什么我必须在静态字段List
中完全限定java.lang.Stringpublic 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;
}
}
错误是“无法对非静态类型字符串进行静态引用”
答案 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>