【发布时间】:2010-12-21 21:19:50
【问题描述】:
我在 Wicket 1.3 -> Wicket 1.4 迁移时遇到了一些问题,但这个问题也可以应用于 Java 泛型。迁移导致数百个警告突然出现——对于那些不熟悉 Wicket 的人来说,许多 Wicket 类都派生自一个共同的祖先,在 v1.4 中被泛型化——我不确定要应用哪些参数在某些情况下,主要是各种表格和表格。我认为他们可以使用 <?>、<Object> 或 <Void>,但我不确定是哪一个。
<?> 似乎最适合我,但有很多地方我不能使用通配符。 <Object> 在所有情况下都有效,但这让我感到不安,因为它基本上是在不使用通配符的情况下编写通配符,这对我的部分大脑来说是天生错误的。在Wicket migration guide 中建议使用<Void>。
那么在这种情况下应该怎么做呢?
编辑 2:我认为我的第一次编辑(现在在问题的底部)使人们看起来像是在询问字符串的集合,从而使人们感到困惑。以下是其他示例及其警告:
public class DocumentProcessor extends Form implements DocumentManagement { ...
Form 是原始类型。对泛型类型 Form 的引用应该被参数化
AjaxFallbackDefaultDataTable theTable = new AjaxFallbackDefaultDataTable("theTable", cols, dataProvider, recPerPg);
此行有多个标记
- 类型安全:构造函数 AjaxFallbackDefaultDataTable(String, List, ISortableDataProvider, int) 属于原始类型 AjaxFallbackDefaultDataTable。应参数化对泛型类型 AjaxFallbackDefaultDataTable 的引用
- AjaxFallbackDefaultDataTable 是原始类型。应参数化对泛型类型 AjaxFallbackDefaultDataTable 的引用
- AjaxFallbackDefaultDataTable 是原始类型。对泛型 AjaxFallbackDefaultDataTable 的引用应该被参数化
编辑:我希望这个问题如此广泛以至于不需要示例代码,但这里有一些。
List<IColumn> columns = new ArrayList<IColumn>();
columns.add(new PropertyColumn(new Model<String>("Number"), "revisionID"));
会生成以下警告:
[第一行] 处有多个标记
- IColumn 是原始类型。对泛型类型 IColumn 的引用应参数化
- IColumn 是原始类型。对泛型 IColumn 的引用应该被参数化在 [第二] 行有多个标记
- 类型安全:构造函数 PropertyColumn(IModel, String) 属于原始类型 PropertyColumn。应参数化对泛型类型 PropertyColumn 的引用
- PropertyColumn 是原始类型。对泛型 PropertyColumn 的引用应该被参数化
没有错误。
【问题讨论】: