「Java/サンプル/無名クラスにパラメータを渡す」の編集履歴(バックアップ)一覧はこちら

Java/サンプル/無名クラスにパラメータを渡す」(2012/09/26 (水) 02:31:32) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* Java tips 無名クラスにパラメータを渡すサンプルです。 *** 解説 無名クラスには通常外部から自由にパラメータを渡すことが出来ないため、いつも無名クラスのためにメンバ変数を用意していました。 でもJavaには無名クラスにパラメータを渡す方法があったのでメモして置きます。 *** ポイント - パラメータを保存する変数を用意する - パラメータを受け取るメソッドを作成する - パラメータを受け取るメソッドは自分自身を戻り値とする - 無名クラスを作成した瞬間だけ、パラメータ受け渡し用のメソッドを実行出来る ローカル変数にfinalつけて、無名クラスの中からアクセスできるようにも出来るらしいです… *** ソースコード #highlight(java){{ import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; class NoNameParam extends JFrame { NoNameParam() { init(); addMessageButton("メッセージ", "ほげほげっ"); addMessageButton("メッセージ2", "もげもげ"); } public void init() { getContentPane().setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("無名クラスにパラメータを渡す"); setSize(200, 300); setVisible(true); } private void addMessageButton(String btnName, String msg) { JButton btn = new JButton(btnName); ActionListener al = new ActionListener() { // ポイント1 パラメータを格納する変数 Component parentComponent; String msg; // ポイント2 無名クラスにパラメータを渡すメソッド 無名クラス自身のクラスを返却する ActionListener setParam(Component parentComponent, String msg) { // パラメータ格納 this.parentComponent = parentComponent; this.msg = msg; // ポイント3 自分自身を返却する return this; } @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(parentComponent, msg); } // ポイント4 無名クラスを作成した瞬間だけ、setParamを呼べる。 }.setParam(this, msg); btn.addActionListener(al); getContentPane().add(btn); } public static void main(String[] args) { new NoNameParam(); } } }}
* Java tips 無名クラスにパラメータを渡すサンプルです。 *** 解説 無名クラスには通常外部から自由にパラメータを渡すことが出来ないため、いつも無名クラスのためにメンバ変数を用意していました。 でもJavaには無名クラスにパラメータを渡す方法があったのでメモして置きます。 *** ポイント - パラメータを保存する変数を用意する - パラメータを受け取るメソッドを作成する - パラメータを受け取るメソッドは自分自身を戻り値とする - 無名クラスを作成した瞬間だけ、パラメータ受け渡し用のメソッドを実行出来る ローカル変数にfinalつけて、無名クラスの中からアクセスできるようにも出来るらしいです… *** 実行結果 &ref(java無名クラスにパラメータを渡す.png) 無名クラスにに渡したパラメータでダイアログを表示してみました。 *** ソースコード &ref(NoNameParam.java) #highlight(java){{ import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; class NoNameParam extends JFrame { NoNameParam() { init(); addMessageButton("メッセージ", "ほげほげっ"); addMessageButton("メッセージ2", "もげもげ"); } public void init() { getContentPane().setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("無名クラスにパラメータを渡す"); setSize(200, 300); setVisible(true); } private void addMessageButton(String btnName, String msg) { JButton btn = new JButton(btnName); ActionListener al = new ActionListener() { // ポイント1 パラメータを格納する変数 Component parentComponent; String msg; // ポイント2 無名クラスにパラメータを渡すメソッド 無名クラス自身のクラスを返却する ActionListener setParam(Component parentComponent, String msg) { // パラメータ格納 this.parentComponent = parentComponent; this.msg = msg; // ポイント3 自分自身を返却する return this; } @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(parentComponent, msg); } // ポイント4 無名クラスを作成した瞬間だけ、setParamを呼べる。 }.setParam(this, msg); btn.addActionListener(al); getContentPane().add(btn); } public static void main(String[] args) { new NoNameParam(); } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: