Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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_Templates - Fatal编程技术网

Java 这里怎么了

Java 这里怎么了,java,templates,Java,Templates,我觉得这很奇怪。有人能解释吗 请注意,该代码从不使用“extends”,只使用“super E”,而是出于某种特殊原因 提出了“扩展” import java.util.Comparator; 公共类TestClass{ private Comparator这与无法推断正确类型的三元运算符有关。请检查此问题这应该是使用链接作为副本的注释。我知道这一点,但这种情况看起来有所不同。该线程具有列表与列表。这里的类型完全相同:ComparatorThis不是副本。请参阅注释下面这个问题通常发生在泛型中,

我觉得这很奇怪。有人能解释吗

请注意,该代码从不使用“extends”,只使用“super E”,而是出于某种特殊原因 提出了“扩展”

import java.util.Comparator;
公共类TestClass{

private Comparator这与无法推断正确类型的三元运算符有关。请检查此问题

这应该是使用链接作为副本的注释。我知道这一点,但这种情况看起来有所不同。该线程具有列表与列表。这里的类型完全相同:ComparatorThis不是副本。请参阅注释下面这个问题通常发生在泛型中,所以只需使用第二个编译选项(可能有效)
import java.util.Comparator;

public class TestClass <E> {

    private Comparator<? super E> compNatural = new Comparator<E>() {
        @SuppressWarnings("unchecked")
        @Override
        public int compare(E lhs, E rhs) {
            return ((Comparable<E>)lhs).compareTo(rhs);
        }
    };

    private Comparator<? super E> comp; 

    public TestClass(Comparator<? super E> comp) {
        // Reports an error:
        // Type mismatch: cannot convert from Comparator<capture#10-of ? extends Object> to Comparator<? super E> 
        this.comp = (comp==null) ? compNatural : comp;

        // The following compiles OK!!!
        if (comp==null) this.comp = compNatural; else this.comp = comp;         
    }


}