InstrumentedHashSet<String> s = new InstrumentedHashSet<String>(); s.addAll(Arrays.asList("AAA", "BBB", "CCC"); System.out.println(s.getAddCount()); このとき、s.getAddCount()は6を返す。要素を3つしか追加していないのに何故か? その理由はHashSetが内部的にaddを呼び出しているから。add()とaddCount()で二重にaddCountが加算されている。 このInstrumentedHashSetを正しく動作させる為には、HashSetのaddAllメソッドがallメソッドを使用しているという事実を実装者が知っている必要がある。サブクラスとスーパークラスの実装が同じプログラマの管理下であれば安全だが、そうでない場合は脆い