他の人が言ったように、多くの場合、匿名の内部クラスを使用すると、他の場所でも使用されます...
したがって、内部クラスのコードを多くの場所に簡単に複製できます...非常に単純な内部クラスを使用してコレクションをフィルタリング/ソートし、述語、コンパレータなどを使用している場合、これは問題ではないようです...
ただし、まったく同じことを行う匿名の内部クラスを 3 回使用する場合 (たとえば、コレクションの "" を削除する場合)、実際には Java PermGen で 3 つの新しいクラスを作成していることを知っておく必要があります。
そのため、誰もがどこでも内部クラスを使用すると、アプリケーションの permgen が大きくなる可能性があります。アプリケーションによっては、これが問題になる可能性があります...業界で働いている場合は、最適化する必要があるメモリが限られている組み込みアプリケーションをプログラムすることがあります...
これは、二重中括弧構文 (非静的初期化ブロックを持つ匿名の内部クラス) が時々アンチパターンと見なされる理由でもあることに注意してください。
new ArrayList<String>() {{
add("java");
add("jsp");
add("servlets");
}}
それらを使用することを禁止する人に尋ねる必要があります... IMHOそれはすべて文脈に依存します...