在java中创建泛型方法
如果我将(Inventory)
更改为(T)
,它将无法识别getId()
public static <T> T getSelectedRow(Table table) {
T selectedItems = (T) table.getValue();
if (selectedItems != null) {
System.out.println("getSelectedRow id:"+ ((Inventory) selectedItems).getId());
return selectedItems;
}
我如何使它作为((T) selectedItems).getId()
工作
表是vaadin7,我使用Java8
我不想使用Inventory
,它应该是泛型的,这样我就可以使用不同的对象Inventory
只是其中之一,有些人有{
# 1 楼答案
因为
T
是类型的占位符,而且就编译器而言T
没有getId()
或任何其他不属于Object
的方法。你不能那样做但是,您可以将
T
约束为<T extends Inventory>
# 2 楼答案
如果您确实需要
getId
:或者(没有接口)更难看、更脆弱——当只需要
getId
时: