1

私は互いに矛盾するいくつかのオンライン記事を読みました。これは匿名の内部クラスの例になると思いました。

button.addActionListener(new ActionListener() {
    public void actionPerfored(ActionEvent e) {
       // do something.
    }
});

ただし、これは匿名の内部クラスとして記述されていることも確認しました。

ActionListener myListener = new ActionListener() { 
    public void actionPerformed(ActionEvent event) {
          // do something.
    }
};
button.addActionListener(myListener);

どれがどれで、なぜですか?ありがとうございました!

4

4 に答える 4

10

どちらもそうです。2つ目は、アクションリスナーとして追加される前に、変数に割り当てられるだけです。

これはの違いと同じです

myList.add(new String("myString"));

String s = new String("myString");
myList.add(s);

匿名クラスとは何の関係もありません。

于 2012-04-10T14:12:27.920 に答える
0

どちらも匿名の内部クラスです。2番目のケースでは、後でいくつかのメソッドを呼び出すことができるように、匿名クラスへの参照を保存しています。

于 2012-04-10T14:13:19.900 に答える
0

リシャンテが言ったように、彼らは両方ともそうです。

考えてみてください。どちらも名前がなく、別のクラス内で定義されています。

于 2012-04-10T14:14:38.413 に答える
0

どちらも実際には匿名内部クラスの例です。最初の例では、引数をaddActionListener()メソッドに渡すときに、匿名の内部クラスが提供されます。2番目の例では、匿名内部クラスへの参照が作成されます。

于 2012-04-10T14:16:54.480 に答える