空のセルを示すための null 参照の使用を避けながら、Guava ライブラリの Optional< T > クラスを使用してオブジェクトのマトリックス (2D グリッド) を処理することを検討しています。
私は次のようなことをしています:
class MatrixOfObjects() {
private Optional<MyObjectClass>[][] map_use;
public MatrixOfObjects(Integer nRows, Integer nCols) {
map_use = (Optional<MyObjectClass>[][]) new Optional[nRows][nCols];
// IS THIS CAST THE ONLY WAY TO CRETE THE map_use INSTANCE?
}
public MyObjectClass getCellContents(Integer row, Integer col) {
return map_use[row][col].get();
}
public void setCellContents(MyObjectClass e, Integer row, Integer col) {
return map_use[row][col].of(e);
// IS THIS THE CORRECT USE OF .OF METHOD?
}
public void emptyCellContents(Integer row, Integer col) {
map_use[row][col].set(Optional.absent());
// BUT SET() METHOD DOES NOT EXIST....
}
public Boolean isCellUsed(Integer row, Integer col) {
return map_use[row][col].isPresent();
}
}
上記のコードについて 3 つの質問があります。
- オプションの配列の配列のインスタンスを作成する方法は?
- MyObjectClass オブジェクトをセルに割り当てる方法 (これは正しいと思います)
- 参照がもう含まれないようにセルを「空」に割り当てる方法は?
この Optional クラスについて重要な何かが欠けていると思います。
ありがとう