我在一本java书中发现了这个,并想了解为什么我会收到如下所述的错误:
public class Wildcard<V> {
V value;
public Wildcard(V value) {
super();
this.value = value;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
public boolean sameObj(Wildcard<? extends V> v1, MyComparator<V> comparator) {
return comparator.compare(this.value, v1.value);
}
public static void main(String[] args) {
Wildcard<Integer> iTest = new Wildcard<Integer>(10);
Wildcard<Number> nTest = new Wildcard<Number>(10);
nTest.sameObject(iTest, new MyComparator<Number>() {
public boolean compare(Number o1, Number o2) {
return o1 == o2;
}
});
}
}
interface MyComparator<V> {
public boolean compare (V value,V value2) ;
}
Run Code Online (Sandbox Code Playgroud)
出现在该行上的语法错误nTest.sameObject是:
The method sameObject(Wildcard<Integer>, new MyComparator<Number>(){}) is undefined for the type Wildcard<Number>
由于该方法是在Wildcard参数化的类上调用的Number,因此sameObject函数的第一个参数可以是任何扩展V的参数(在这种情况下为Number),并且接下来出现的函数的参数应该是V(在这种情况下为数字).因此,它应该是一个合法的电话.为什么不是合法的电话?
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |