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