1

Java の初心者として、「new」キーワードを使用するとコンストラクターが呼び出され、それによってオブジェクトにメモリが割り当てられると教えられてきました。もしそうなら、次のように書くとどうなるでしょうか。

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

??

メモリが割り当てられている場合、「インターフェイスをインスタンス化できない」という概念に違反していませんか? 新しい ActionListener のメモリ割り当てはありませんか? メモリが割り当てられていない場合、オブジェクト参照を指定していないときにどのようにアクセスしますか? それとも、これは単に「'new' でのメモリ割り当て」ルールの例外として機能しますか??

4

3 に答える 3

2

あなたの場合、匿名(コンパイラによって選択された名前)クラスは、デフォルトのコンストラクターと暗黙的に実装されたインターフェースで作成され、キーワードActionListenerで作成する他のクラスと同様に喜んでインスタンス化されます。new

于 2014-03-18T13:26:55.740 に答える
0

むしろ、新しい単語をオブジェクトのインスタンス化として見てください。新しい ActionListener のメモリ割り当てはありませんか? はい その場合、どのようにアクセスしますか? ボタン オブジェクトは、発生したアクション イベントを渡して ActionListener#actionPerformed() を呼び出します。

ここでの規則に例外はありません。

于 2014-03-18T13:28:29.410 に答える