LoginSignup
4
2

More than 5 years have passed since last update.

[Java小ネタ]Listに値が追加されるタイミングを監視する

Last updated at Posted at 2018-05-23

デバッグ用の小ネタ。Listに値が追加されたタイミングを追う方法。

public class Foo {

   public List<String> list = new ArrayList<>();

}

上記のようなListにいつ値が追加されたか監視したい場合、以下のように無名クラスに書き換えてaddメソッドをオーバーライドすると、値が追加されたタイミングでログ出力したり、ブレイクポイントで処理を止めることができる。

public class Foo {

   public List<String> list = new ArrayList<String>() {

      @Override
      public boolean add(String string) {
         // ここにブレイクポイントをつければ、値が追加されたタイミングで処理を止められる
         System.out.println("addされました:" + string);
         return super.add(string);
      }

   };

}

add だけでなく remove など他の処理も拡張可能。
あくまでちょっとしたデバッグ用。

そういえば

無名クラスと初期化ブロックを使ってListの初期化をすることができる。

List<String> list = new ArrayList<String>();        
list.add("1");
list.add("2");
list.add("3");

上記は以下のように書ける。

List<String> list = new ArrayList<String>() {{
   add("1");
   add("2");
   add("3");
}};

若干タイプ数は減るものの、初心者に優しくないのでチーム開発で使うのはおすすめしない(普通こんなことしないと思うが。。。)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2