0

我面临一个类型转换问题,我无法找到解决方法。

上下文是在 java 6 中开发的遗留项目,其项目 B 依赖于项目 A。目前构建过程涉及为项目 A 生成 .class 并在构建之前将它们手动复制到项目 B 中。这很尴尬,但它有效。

当我尝试将依赖项定义到 pom 中时,问题就出现了,这样我们就可以摆脱手动过程并让 maven 处理依赖项。

这是导致错误的代码:

List<RowFilter<MyTableModel, Integer>> filters = new ArrayList<RowFilter<MyTableModel, Integer>>();
myTable.setFilter(RowFilter.andFilter(filters);

setFilter 定义为:

public void setFilter(RowFilter<MyTableModel, Integer> filter)

我得到的错误是:

setFilter(javax.swing.RowFilter<javax.swing.table.TableModel,java.lang.Integer>) 不能应用于 (javax.swing.RowFilter<java.lang.Object,java.lang.Object>)

我需要了解为什么它在当前构建过程中有效,但在使用 maven 依赖项时无效?以及如何解决它。

谢谢

4

1 回答 1

0

在玩了一点演员之后,我发现以下工作:

  1. 在每次调用 setFilter 时执行此操作(十多个)

    myTable.setFilter((RowFilter<TableModel, Integer>) (Object) RowFilter.andFilter(filters));

  2. 或者像这样重新定义 setFilter 签名

    public void setFilter(RowFilter<?, ?> filter)

  3. 或者像这样

    public void setFilter(RowFilter filter)

谁能解释为什么它一开始就不起作用以及为什么起作用?或者是否有更好的解决方法?

与此同时,我选择了第二个选项。

于 2021-03-12T09:05:10.250 回答