« 「求まる」 | トップページ | コレクション: Java vs .NET »

2006年8月30日 (水)

コレクション: インタフェースか具象クラスか

.NET Framework のリストを List<?> のまま扱うか、IList<?> として扱うか、という話。

.NET Framework なら、List のまま扱うのがいいと思う。実際、IList を実装したクラスで List 以外のものを使う機会はまずなかろう。わざわざ List を IList にキャストする意味はない。

そもそも、.NET Framework の IList インタフェースは機能が貧弱なのだ。一方、List 具象クラスは機能が豊富に揃っている (AddRange とか IndexOf とか TrueForAll とか)。機能が少ないので IList を実装したクラスを作ることは難しくないのだが、実際にそれをリストとして扱って仕事をするには IList の機能だけでは不足し、結局 List の機能に頼ることが多いと思う。だから、最初から最後までずっと List のまま通せばいい。.NET Framework のコレクションは、もともとインタフェースよりも具象クラスに重きを置いて設定してあるように思われる。

Java は逆だ。List インタフェースに十分な機能が揃っている。具象クラスに固有な機能はほとんど使うことはない。List インタフェースに機能が多いということは、それだけ具象クラスを作りにくいということでもあるが、Java では最初から具象クラスが複数用意されている。だから、Java ではリストを List インタフェースにキャストしてしまった方がよい。リストをインタフェースとして扱っておけば、場合に応じてリストの具象クラスを差し替えることができる。

|

« 「求まる」 | トップページ | コレクション: Java vs .NET »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/11681949

この記事へのトラックバック一覧です: コレクション: インタフェースか具象クラスか:

» コレクション: Java vs .NET [まじかんと雑記]
なんだかんだ言って、.NET Framework のコレクションの設計はかなり悪い [続きを読む]

受信: 2006年8月30日 (水) 14時12分

« 「求まる」 | トップページ | コレクション: Java vs .NET »