【问题标题】:Using Java generics in an anonymous inner class [duplicate]在匿名内部类中使用 Java 泛型 [重复]
【发布时间】:2018-04-17 11:18:03
【问题描述】:

我已经编辑了我的示例,以展示一个更实际的示例来说明我正在努力实现的目标。考虑到传递给方法的类型,我想了解在 Lambda 表达式中实例化新 TableCell 对象时应该指定的第二种类型。

提前感谢您的帮助。

void setTableCellStuff (TableColumn <Object, ?> tableCell) {
    tableCell.setCellFactory(arg0 -> 
        new TableCell <Object, ?> () // cannot use ? in instantiator.
    );
}

【问题讨论】:

  • 为什么必须重用col 变量?如果您每次都使用一个新变量,您会遇到问题吗?对象生命周期可能存在问题,但从这一点代码中无法判断。
  • 你能提供一个minimal example吗?
  • 嗨@SeverityOne,感谢您的评论。正如我在问题中所说,我可以为每一列声明一个新变量,但我试图在打字时保持经济,特别是因为我有大约 30 列。所以我想知道我正在做的事情是否可行,也希望对泛型有更多的了解。谢谢!
  • @ohlec 你在这里: TableColumn col = new TableColumn ("Reference"); col.setCellFactory(arg -> new TableCell () { } );

标签: java generics lambda


【解决方案1】:

你可能想要这个:

<T> void setTableCellStuff (TableColumn <Object, T> tableCell) {
    tableCell.setCellFactory(arg0 -> 
        new TableCell <Object, T> ()
    );
}

T 仍然可以是任何类型,但是这样您构建的表格单元格的类型与您拥有的列的类型相匹配。

【讨论】:

  • 非常感谢。我以前从未见过这种方法,必须研究一下!
  • 也可以写new TableCell&lt;&gt;()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多