- ベストアンサー
インタフェースの実装はどこで?
インタフェースに実装をもてるの?という質問で類似の内容への回答がありましたが、具体例としてどのようになるのかお聞きしたいです。 javax.sound.midiを使用したプログラムです。以下のようなソースを実行したとき、device[]にはMidiDeviceインタフェースを実装したクラスのインスタンスが格納される、というように理解しています。このうち、あるデバイスについてgetClass()を実行したところ、 com.sun.media.sound.MidiOutDevice という名称が出力されました。このクラスは一体どこで実装されているのでしょうか? ---------------------------------------------------------- info = MidiSystem.getMidiDeviceInfo(); device = new MidiDevice[info.length]; for(int i=0; i<info.length; i++){ try{ device[i] = MidiSystem.getMidiDevice(info[i]); } catch(MidiUnavailableException e){} }
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
com.sun.media.sound.MidiOutDevice で実装されています。 クラスパスの中のどこかに必ず存在しています。 質問の内容から察するに、インタフェースやクラスというものをご理解されていないと思いますので、そういった基本的なところから勉強しなおされたほうがよいと思います。
その他の回答 (4)
- OKwebb
- ベストアンサー率44% (92/208)
補足その2 > 型で定義したものと違うクラス名もしくは > インタフェース名のものは格納されないものだと思ってしまっていました。 いえいえ。 例えばJDBCドライバの実装クラスは oracle とか postgresql とか mysql とかDB毎に違いますが、使う人は 基本的に java.sql のインターフェイスクラスを使いますよね。 (ってDB扱ったことないと思いつかないと思いますが) 便利だと思いますよぉ。
お礼
お礼が遅くなって申し訳ありません。なるほど・・・ありがとうございます。以前ご指摘がありましたが勉強不足を実感します。 みなさまありがとうございました。
- OKwebb
- ベストアンサー率44% (92/208)
補足 > 質問のソースでは、debice[]はインタフェースのMidiDevice型でフィール > ドとして定義していますが、そこにMidiDeviceを実装したMidiOutDeviceク > ラスのインスタンスが格納されているという理解でよいのでしょうか。 OKです。
お礼
ありがとうございます。型で定義したものと違うクラス名もしくは インタフェース名のものは格納されないものだと思ってしまっていました。
- OKwebb
- ベストアンサー率44% (92/208)
> このクラスは一体どこで実装されているのでしょうか? の意味がいまひとつわからないので、的をはずすかもしれませんが。 javax.sound.midi.MidiSystem で。
補足
ご回答ありがとうございます。 ご指摘の文章はミスです。申し訳ありません。 このクラスは一体どこに記述されているのでしょうか? の誤りです。他の方のご指摘を見ると、ここを修正しても本質的に 解決にはなっていないのだと思いますが、訂正させていただきます。
- Tacosan
- ベストアンサー率23% (3656/15482)
#1 に補足: 「本当のクラスファイル」が存在するとは限らないので注意してください. どこかの jar の中にこっそり隠れているかもしれません.
補足
補足していただきありがとうございます。探してみます。
補足
ご回答ありがとうございます。ご指摘のとおり勉強不足ですが、折り返し 質問させてください。 質問のソースでは、debice[]はインタフェースのMidiDevice型でフィールド として定義していますが、そこにMidiDeviceを実装したMidiOutDeviceクラス のインスタンスが格納されているという理解でよいのでしょうか。 勉強不足で質問してしまい恐縮ですが、よろしくお願いします。