我最近开始在java中使用泛型,并尝试重构我们团队的现有代码.
任何人都可以告诉我以下有什么问题 -
private ArrayList<? extends WorkTabPane> workTabPanes = null;
protected <T extends WorkTabPane> void addPane(T pane) {
workTabPanes.add(pane);
}
Run Code Online (Sandbox Code Playgroud)
Eclipse在第3行表示错误(在添加时) - "类型ArrayList中的方法add(捕获#1-of?extends WorkTabPane)不适用于参数(T)"
我相信你想拥有
private ArrayList<WorkTabPane> workTabPanes = null;
protected void addPane(WorkTabPane pane) {
workTabPanes.add(pane);
}
Run Code Online (Sandbox Code Playgroud)
(您仍然可以WorkTabPane向列表中添加子类.)
eclipse抱怨的原因如下:通过写<? extends WorkTabPane>你说"这是一个特定类的列表恰好扩展WorkTabPane".例如,该变量可以包含对a的引用ArrayList<WorkTabPaneSubclass1>.但是,如果是这种情况,则不应允许您将类型的项添加WorkTabPaneSubclass2到列表中.你看到了问题?
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |