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

次のコードを書くことができます -

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 に答える
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 に答える