torutkのブログ

ソフトウェア・エンジニアのブログ

Java Swingメモ

古いノートの内容からメモ

Common beans event handlerパターン

Swingでリスナーをセットする際に、匿名クラスを使うことが多いが、小さいクラスが大量に生成されてしまう。クラスロード毎に4KBのヒープがとられる、遅くなる、等の問題がある。

JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ev) {
            // OKボタンが押されたときの処理
        }
    });

画面にたくさんのGUIパーツが散りばめられた場合、匿名クラスが大量に(数十〜数百)作成されることになります。ダイアログが数百あるアプリケーションを考えるとすごいことになりますね。

ActionListener okListener = (ActionListener)EventHandler.create(
    ActionListener.class, this, "okButtonClicked"
);
okButton.addActionListener(okListener);

となるようです。

ToDo:サンプルコードを書いて実験してみる