• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:インターフェースは New 出来ない! の?)

インターフェースはNewできない?

このQ&Aのポイント
  • 現在JDKSE 1.3.1でJavaの調査をしています。インターフェースはインスタンスを作成できないという仕様がありますが、なぜnew ActionListener()として引数に渡せるのでしょうか?
  • Javaのインターフェースはインスタンスを作成できないという仕様がありますが、なぜnew ActionListener()として引数に渡すことができるのでしょうか?
  • Javaのインターフェースはインスタンスを作成できないという仕様がありますが、addActionListenerの引数にnew ActionListener()という記述ができる理由を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

匿名クラスのインスタンスを作っているんだと思います。 この場合は、ActionListenerインタフェースを実装する新しいクラスを作り、さらにそのインスタンスを作成しています。あくまでも「インタフェースを実装したクラス」を new しているのであり、インタフェースを new しているのではありません。 匿名クラスというのは、コードの中でクラスの設計とインスタンス化を同時に行うもので、インタフェースを実装したり、ほかのクラスのメソッドをオーバーライドしたクラスを臨時に作成したりするのに使われます。 button.addActionListener(new ActionListener(){..... のあとに、ActionListenerインタフェースを実装するためのメソッドがかかれているはずです。

sho_ta
質問者

お礼

回答有り難うございました。 匿名クラスなのですね・・・・ なるほど、確かに「匿名」なのでclass 名を指定しないのか! 有り難うございました。

関連するQ&A