我在 Wicket 1.3 -> Wicket 1.4 迁移时遇到了一些问题,但是这个问题也可以应用于 Java 泛型。迁移已经导致数百个警告突然出现——对于那些不熟悉 Wicket 的人来说,许多 Wicket 类都来自一个共同的祖先,它在 v1.4 中被泛化——我不确定要应用哪些参数在某些情况下,主要是各种表格和表格。我认为他们可以使用<?>
,<Object>
或<Void>
,但我不确定是哪个。
<?>
似乎最适合我,但有很多地方我不能使用通配符。 <Object>
在所有情况下都有效,但这让我感到不安,因为它基本上是在不使用通配符的情况下编写通配符,这对我的部分大脑来说是天生错误的。Wicket 迁移指南<Void>
中建议使用。
那么在这种情况下,正确的做法是什么?
编辑 2:我认为我的第一次编辑(现在在问题的底部)使人们看起来像是在询问字符串的集合,从而使人们感到困惑。以下是其他示例及其警告:
public class DocumentProcessor extends Form implements DocumentManagement { ...
表单是原始类型。对泛型类型 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 的引用[the second] 行的多个标记
- 类型安全:构造函数 PropertyColumn(IModel, String) 属于原始类型 PropertyColumn。应参数化对泛型类型 PropertyColumn 的引用
- PropertyColumn 是原始类型。应参数化对泛型类型 PropertyColumn 的引用
没有错误。