This question already has answers here:
Cannot Instantiate Type in generics

(2个答案)


2年前关闭。




我已经编辑了示例,以显示我想要实现的更实际的示例。我想了解在实例化Lambda表达式中的新TableCell对象时应指定为第二种类型,因为类型已传递给方法。

在此先感谢您的帮助。
void setTableCellStuff (TableColumn <Object, ?> tableCell) {
    tableCell.setCellFactory(arg0 ->
        new TableCell <Object, ?> () // cannot use ? in instantiator.
    );
}

最佳答案

您可能想要这样:

<T> void setTableCellStuff (TableColumn <Object, T> tableCell) {
    tableCell.setCellFactory(arg0 ->
        new TableCell <Object, T> ()
    );
}
T仍然可以是任何类型,但是通过这种方式,您构造的表单元格的类型与您拥有的列的类型匹配。

09-27 18:17