• ベストアンサー

フレームワークによくあるインターフェースについて

たとえばSpringだとInitializingBeanインターフェースを 実装してafterPropertiesSetメソッドに処理を書くことによって Beanを初期化したときにその処理が実行されるようですが、 これはどのような仕組みでそのインターフェースを実装しているか どうかを判断しているのでしょうか? getInterfacesメソッドを使うとそのクラスが実装している インターフェースを調べることができるようですが、 これは親クラスのインターフェースまでは調べられないようですし、 フレームワークはどのようにしてそのクラスが実装している インターフェイスを判定しているのか不思議です。

  • Java
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
回答No.1

instanceof でも検査できるし、「キャストして例外が起きるかチェック」だけでも 十分だと思います。

utawoutau
質問者

お礼

ありがとうございます。キャストでの例外チェックは いろいろと応用ができそうですね

関連するQ&A

  • インターフェース

    インターフェースについて学ぼうと思っているのですが、 どうもいまいち何がなんだかわからなくなっています。 インターフェースはクラスによって実装され、 実装クラスはインターフェースで宣言されている 抽象メソッドを実行する とあるのですが、実装とは何ですか? 抽象メソッドとは何ですか?

    • ベストアンサー
    • Java
  • インターフェイスの使い方がわかりません(初心者です)

    Javaを始めたばかりの初心者です。 「やさしいJava」を買って一通り学んだのですが、 インターフェイスの使い方がよくわからず、困っています。 インターフェイスを実装することでインターフェイスが持つメソッドがすべて定義されてることが保障される、 というのはわかるんですが、そのことがどうして有用なのでしょう? また、具体的にはスレッドを扱うときにRunnableインターフェイスを実装する理由がわかりません。 Threadクラスのオブジェクトを作成するときに、 Runnableを実装したクラスのオブジェクトの変数を 引数にしないといけないんですよね? このとき、Runnableインターフェイスが 「runメソッドが定義されていなければならない」 とだけいうものだったとしたら、 Runnableを実装してなくてもrunメソッドさえ定義してあれば 実行できそうな気がするんですが・・・

    • ベストアンサー
    • Java
  • インターフェイスは何故必要か

     Javaの初心者です、宜しくお願いします。  Javaには継承という仕組みがあるのに何故インターフェイスという 仕組みが必要なのでしょうか。  勿論、2個の親クラスからの継承を嫌ったのはなんとなく理解出来るのですが それなら子クラスでインターフェイスの機能を別途作ってやれば、わざわざイン ターフェイスという仕組みを考える必要がないと思うのですが。  親クラス、子、孫、またその孫としてやり、そのどれかのクラスに インターフェイスの機能を持たせれば良いだけと考えるのですが。  インターフェイスのメッソドを全て実装する必要とかもなくなると思うのですが。  以上宜しくお願いします。

    • ベストアンサー
    • Java
  • アブストラクトとインターフェースの簡単な一例文

    JAVAについて質問よろしくお願いします。 abstract抽象クラスとインターフェースについて下記理解なのですが、超かんたんな一例など欲しいのですが何かないでしょうか。たとえば package round1.chapter1; public class Helloworld { public static void main(String[] args) { System.out.println("こんにちは!"); } } というような一文です。 ~私の理解~ アブストラクトとは、違ったクラス内で同一メソッドがある場合は親クラスに置き、違ったメソッドがある場合は抽象クラスとして親クラスに置いて、実装はサブクラスに任せるという形式で使われる言葉 インターフェースとは、機能だけを仕様書として書いておき、定義されたとおりのメソッドを実装しないといけないという呼び出し方の統一を図る際に使われるメソッド置き場 ~~~~~ このふたつについてものすごく簡単な使用例を頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • interface,extend,implementのちがい

    お世話になります、 Javaを勉強しているのですが、 interface,extend,implementの使い分けがわかりません。 私の解釈としては、 (1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。 (2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。 (3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか? とにかくこの3つのを使い分けるコツとかあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 「インタフェースを実装してそれが持つ抽象メソッドをオーバーライドする」

    「インタフェースを実装してそれが持つ抽象メソッドをオーバーライドする」は正しい? はじめまして。Javaのインタフェースに関する質問です。 私はこれまで、インタフェースを使うときは、インタフェースを実装してクラスを宣言し、そのクラス、またはサブクラスでインタフェースがもつすべての抽象メソッドを定義する、と理解していました。 しかし、下の例をみてください。抽象メソッドの定義を、インタフェースの実装の以前で与えています。問題無くコンパイルでき、実行できます。実行結果も以下の通りです。 インタフェースの抽象メソッドへの定義の与え方やその実行のされ方は、メソッドのオーバーライドと同様と思っていましたので、下記のコードでは「クラスBが抽象クラスではありません」や、「インタフェースの抽象メソッドがオーバーライドされていません」などの文法エラーがでると思っていました。 そこで、質問です。 インタフェースが持つ抽象メソッドの定義を与える場所について、または、これに関する説明のあるページなど、何かご存知でしたら教えてください。 ★コード★ interface X{   void show(); } class A{   public void show(){     System.out.println("A");   } } class B extends A implements X{ } public class Main{   public static void main(String[] args){     X x=new B();     x.show();   } } ★実行結果★ >java Main A ★Java環境★ java 1.6.0_21 javac 1.6.0_16

    • ベストアンサー
    • Java
  • インタフェースにも実装をもてるの?

    Sun の仕様書などを見ても、インタフェースの使用をみても、メソッドを呼び出した時の処理が書かれていますよね。。。 私の記憶では、インタフェースでは実装をもてなかったハズなんですが… 実装する亊ができるのでしょうか? どなたか、知っている方がいればどうかよろしくお願い致します。

    • ベストアンサー
    • Java
  • インターフェース型の使い方がわかりません。

    ライブラリにあるメソッドはcopy()で コピー処理があるクラスに飛んで、コピーして戻ってくるのはわかりますが、 インターフェース型の使い方がさっぱりわかりません。 簡単にインターフェース型とはどういうものか教えてください。

  • 抽象クラスとインターフェースの使い分け

    抽象クラスとインターフェース、この2つの違い、使い分け方が未だにはっきりとはわかりません・・・ 抽象クラスもインターフェースも実装は持たず、抽象クラスはサブクラスで、インターフェースはそれをインプリメントしたクラスで実装を行うのですよね? 両者ともに言わば中身はなく外枠だけ定義されていると言えると思うのですが、だとしたらこの2つの違いや使い分けってどうなるのでしょうか。 抽象クラスでは部分的な実装を含められることや、インターフェースでは実装クラスが全てのメソッドを実装しなければいけない、複数実装できるといった使い方の違いしかないのでしょうか。 だとしたら実際に抽象クラスとして用意するのかインターフェースとして用意するのかの選択基準はなんなのでしょうか。 明確にこういう場合は抽象クラス、こういう場合はインターフェースなどと言った使い分けってあるのでしょうか。

  • インタフェースの継承について

    どのホームページか忘れたのですが、「xxのロジックを行うためにインタフェースのxxを継承します。」 のような記載がありました。 インタフェースはメソッド等の実装の強要で、処理は無いのでは? インタフェースを継承することでxxができるようになります、の 例があるホームページがありましたら紹介お願いします。

専門家に質問してみよう