1. ホーム
  2. java

[解決済み] 匿名クラスにパラメータを渡すには?

2022-04-27 15:40:44

質問

無名クラスにパラメータを渡したり、外部パラメータにアクセスすることは可能でしょうか?例えば

int myVariable = 1;

myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // How would one access myVariable here?
    }
});

リスナーを実際の名前付きクラスとして作成せずに、リスナーが myVariable にアクセスしたり、myVariable を渡されたりする方法はありますか?

どのように解決するのですか?

匿名クラスはコンストラクタを持つことができないので、技術的にはノーです。

しかし、クラスは含むスコープから変数を参照することができます。 匿名クラスの場合、参照できるのは含むクラスのインスタンス変数か、final でマークされたローカル変数です。

編集 : Peterが指摘したように、匿名クラスのスーパークラスのコンストラクタにパラメータを渡すことも可能です。