【发布时间】:2014-02-25 19:19:59
【问题描述】:
这段代码:
interface I {}
public class Test {
TableView<? extends I> table;
Test(ObservableList<? extends I> list) {
table = new TableView<>();
table.setItems(list);
}
}
...产生此消息:
error: method setItems in class TableView<S> cannot be applied to given types;
table.setItems(list);
required: ObservableList<CAP#1>
found: ObservableList<CAP#2>
reason: argument mismatch; ObservableList<CAP#2> cannot be converted to ObservableList<CAP#1>
where S is a type-variable:
S extends Object declared in class TableView
where CAP#1,CAP#2 are fresh type-variables:
CAP#1 extends I from capture of ? extends I
CAP#2 extends I from capture of ? extends I
两个相同类型之间怎么会出现类型不匹配?我错过了什么?
【问题讨论】:
-
昨天我吃了一些水果。即
? extends Fruit今天我吃了一些水果。? extends Fruit。有人可以从这些信息中假设,我两天都吃相同类型的水果吗?号some fruit #1可能不是some fruit #2