computer.program - プログラミングのお話

FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)

#68: 継承関係で質問
Date: 2001/02/10 13:05:51 Sat Author: GOO・豪 (tnet0077)
Parent Article: #66: 継承関係で質問
Child Article: #70: 継承関係で質問

> 眺めてみると Sequencer seq = (Sequencer)MidiDevice;
> といったことをばっちりやっているではありませんか(^^;
> というわけで、おそらく止まるのは別の理由だったのでしょう。

と思っていましたがやっぱりだめだったようです。
try & catch(JAVA 使うまで使ったことがなかった(ぉ
してみたんですが、ClassCastExceprion が発生しています。
これはもう間違いないでしょう。

http://www.geocities.co.jp/SiliconValley-SanJose/4825/java/
ここで、デバイスが何か選択されていて、有効な MIDI ファイルの URL を
渡している状態で「再生・一時停止」を押すと
Sequencer seq = (Sequencer)MidiDevice; の形の文を実行するように
なっています。

最近になって多態性の使い方として、受け側にスーパークラスを使って
区別せずに済んでらくちん、ってのを何とか理解したところでして、
その逆なんてできるのか?いや、概念的にも何かおかしい、
とか思ってはいたんです。

さてこれでまた MidiDevice + Sequence = Sequencer でいけるはずの道が
閉ざされてしまいました。たぶん馬鹿なことで騒いでるんだと思うんです。
Sequencer seq = MidiSystem.getSequencer(); でデフォルトデバイスの
Sequencer が手にはいるって言うのにデフォルト以外の Sequencer を得るための
システムメソッドが用意されていないわけですし、説明の方でも
MidiDevice から Sequencer への持っていき方はかかれていません。
順に見ていくと堂々巡りになります。

MidiDevice も Sequencer もインターフェイスなのが肝なのかなぁ。
両方を implement したクラスを作れば何とかなるんだろうか。
そもそもインターフェイス自体、コードを持たず implement した
クラスの取り扱い方を増やすだけのもののように見ていたんで、
なんでそんなものがこうもたくさんの機能を持つのか不思議です。
インターフェイスにはまだ何か私の知らない秘密があるということでしょうか。
GOO
E-Mail: goo_n@hotmail.com

■ この記事のコメントを書く

■ この書き込みを削除/復活します(投稿者のみ可)
■ この書き込み近辺の一覧表示へ

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

T-Net ■ メインページ