2

プロジェクト内のいくつかのデータ構造を管理するためにApacheBeanUtilsを使用することを検討しています。タスクは、実行時にのみ認識される任意のパスで、リストからアイテムを削除することです。

BeanUtilsを使用して、次のような呼び出しでアイテムをnullに設定できると思います。

PropertyUtils.setProperty(myObject, "subitem.aList[3]", null);

ただし、私のプロジェクトの他の領域には、これらのリストを反復処理するループがあります。リストにnull項目がある場合、現在は処理されていません。コードがこれらの項目がnullでないことを期待する場所は多数(数十、場合によっては数百)あるため、残念ながら、これらのリストを反復処理する可能性のあるすべてのコードにnullチェックを追加することは実用的ではありません。

BeanUtilsnullに設定する代わりに、コレクションからアイテムを削除するために使用することはできますか?

setProperty渡されたパスを解析し、Listで終わるパスを探して[<number>]番号を解析しList、リストへのパスを取得してを呼び出すことで、これを自分で実装できると思いますremove(number)。自分で展開する前に、既存のソリューションを使用したいと思います。

4

1 に答える 1

0

以下の 2 つの手順で結果を得ることができると思います。

    List aList = (List)PropertyUtils.getProperty(myObject, "subitem.aList");
    aList.remove(3); // remove the fourth element

    //set the modified list back
    PropertyUtils.setProperty(myObject, "subitem.aList", aList);
于 2012-10-05T16:33:47.537 に答える