Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用静态列表<;字符串>;在比较器内<;字符串>;_Java_Generics_Comparator - Fatal编程技术网

Java 无法使用静态列表<;字符串>;在比较器内<;字符串>;

Java 无法使用静态列表<;字符串>;在比较器内<;字符串>;,java,generics,comparator,Java,Generics,Comparator,为什么我必须在静态字段列表中完全限定java.lang.String public static class MyComparator<String> implements Comparator<String> { public static List sortOrder; public static List<Integer> sortOrder2; public static List<java.la

为什么我必须在静态字段列表中完全限定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;
        }
    }
公共静态类MyComparator实现Comparator{
公共静态列表排序器;
公共静态列表排序器2;
公共静态列表排序器3;//有效!
公共静态列表排序器4;//替换:

public static class MyComparator<String> implements Comparator<String>
公共静态类MyComparator实现Comparator
另一个与众不同的名字:

public static class MyComparator<S> implements Comparator<String>
公共静态类MyComparator实现Comparator

您定义了一个与类同名的泛型类型参数
String
,因此
String
引用了您的参数,而
java.lang.String
仍然有效

将其从类中删除,但将其保留在
implements
子句中

public static class MyComparator implements Comparator<String> {
公共静态类MyComparator实现Comparator{

但它应该是一个比较两个java.lang.String对象的比较器,在SortedMap中使用。
S
的目的是什么,当它应该比较
String
S时?它没有目的,这是解决方案。@rgetman好吧,在这种情况下,你完全正确,我甚至会对你的帖子投赞成票。我所做的就是扫描OP的代码,而不扫描理解它的目的,但发现问题。