[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: [jfriends] abstractクラスの方が有効な場合
前橋です。
Shin さん:
>最初はそんなものなのかなって思ってましたが、これってinterfaceを継承
>すればいいだけじゃないです?って上のメモに既に書いてありますが、
>LayoutManager2なりの拡張された新しいinterfaceを用意するほうが正しい
>というか.
ええと、その場合、たとえば setLayoutメソッドの引数は、いつま
でたっても LayoutManagerなのですよね?
LayoutManager2を引数にすると、LayoutManagerを使っている古い
アプリケーションは、再コンパイルも通りませんから。
新しいアプリケーションではLayoutManager2をimplementsしたクラ
スを作って、それをsetLayoutに渡すのでしょう。この時、引数に
対して上向きのキャストが入りますけど、これは問題ないです。
でも、LayoutManagerを提供するクラスライブラリ側では、それを
受けた後でダウンキャストすることになりますよね? 新しい機能を
使うなら、そうせざるを得ない筈です。
古いアプリケーションは、まだLayoutManagerを渡してくるでしょ
うから、何も考えずにダウンキャストすると例外でコケますね。
もちろん、新しい機能を呼ぶ前に、いちいちinstanceofで確認して、
「ああ、こいつはまだ古いインタフェースを使ってるんだなあ」と
解釈してダウンキャストをやめる、というのは、それはそれで筋な
ような気はしますが...
クラスライブラリ側で、いつまでも古いインタフェースを基準にし
て、適宜チェックしてはダウンキャストということになると、コー
ドの信頼性に支障が出そうな気もします。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------