K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>Javaだとこの場合ははオーバライドにはならないで、オーバーロード、 >>引数型が違う同名の別メソッドが増えただけと見なすことでガードするという実装なんですね。 > >こう言っては何なのですが、たぶんこれはJavaを「買いかぶりすぎ」だと思うのです。 > >引数については、反変はOK、共変はNG、 >戻り値については、共変はNG、反変はOK > >なのですが、 > >JDK1.4までのJavaでは、 > >引数については、型が違えばオーバーロード、 >戻り値については、型が違えばコンパイルエラー > >でした。戻り値については共変は許されるべきなのに、古いJavaではコンパイルエラーに >してしまっていたのです。 > >Javaでは、JDK1.5(Tiger)において、「共変戻り値」が許されるようになりました。 > >後になってこれを許すようになったということは、 >当初は、共変とか反変とかそんなことはJavaの作者はあんまりまじめに考えていなくて、 >後になって、共変戻り値はOKにすることができたけれど、反変引数は、既にそれを >オーバーロードという機能で使ってしまっていたためにOKにできなかったのではないか、 >と思います。 >メソッドオーバーロードがすごく便利だから反変引数を捨ててでもそちらを取った、 >というのは言語設計者の選択肢として理解できますが(私はオーバーロードが便利だと >思わないのでその選択肢は取りませんが)、 >本来使えるべき共変戻り値を当初エラーにしてしまっていた(しかも1.5でそれを >撤回した)というのは、あまりこう、ちゃんと考えた結果には見えないんですよねえ。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!