0

我的 GWT 项目中有这个功能:

private InputElement getInputElement(int rowIndex, int columnIndex, 
CellTable<MyClassA> cellTable) {
        InputElement input = null;
        if (isColumnEditable(columnIndex)) {
            input = (InputElement) cellTable.getRowElement(rowIndex).getCells().getItem(columnIndex).getFirstChild().getFirstChild();
        }  
        return input;
    }

如果想在最后一个参数为 时重用这个函数CellTable<MyClassB>,因为其余的代码完全一样。我怎样才能做到这一点?

4

2 回答 2

1

您需要创建一个接口 MyClassInterface 并在两个类中实现它。

public interface MyClassInterface {

}

public class MyClassA implements MyClassInterface {
   ...
}
public class MyClassB implements MyClassInterface {
   ...
}
private InputElement getInputElement(int rowIndex, int columnIndex, 
CellTable<? extends MyClassInterface> cellTable) {
        InputElement input = null;
        if (isColumnEditable(columnIndex)) {
            input = (InputElement) cellTable.getRowElement(rowIndex).getCells().getItem(columnIndex).getFirstChild().getFirstChild();
        }  
        return input;
    }
于 2012-12-13T11:09:07.213 回答
1

您可以编写以下代码 -

public interface MyClassInterface { ... }

public class MyClassA implements MyClassInterface { ... }

public class MyClassB implements MyClassInterface { ... }

private <T extends MyClassInterface> InputElement getInputElement(int rowIndex, int columnIndex, CellTable<T> cellTable)                    
{             
    InputElement input = null;              
    if (isColumnEditable(columnIndex))  
    {  
        input = (InputElement)  cellTable.getRowElement(rowIndex).getCells().getItem(columnIndex).getFirstChild().getFirstChild();  
    }  
    return input;

}

于 2012-12-13T14:36:09.893 回答