我想知道为什么{1}} TableCell
方法在Table单元格中没有Generic时,很明显返回类型与单元格相同&# 39; s通用定义。让我们举一个例子:
我有一个班级:
getTableRow()
首先,我必须将它投射到class MyCustomCell<S extends MyType, T> extends TableCell<S, T> {
@Override
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if(empty){
setText(null);
}else {
S data = (S) getTableRow().getItem();
// do something with data.
}
}
}
,并且有一个警告:
未经检查的强制转换:java.lang.Object。原因:&#39; getTableRow()&#39;有原始类型,因此getItem的结果被删除。但为什么?例如,在(S)
,这种方法很有效:
TreeTableCell
所以你不必将事件投射到public final TreeTableRow<S> getTreeTableRow() { return treeTableRow.get(); }
。我正在研究一下,我发现了这个:https://bugs.openjdk.java.net/browse/JDK-8096461,但是这个链接和相应方法的javadoc都没有对我说什么。该错误的解决方案也被设置为无法修复,但我无法理解为什么,或者为什么这样开发,没有通用。你能解释一下我还是可以用它来理解它?