- PR -

オーバロード

1
投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2005-03-08 11:20
お世話になります。

メソッドのオーバロードを行う際、一方の引数が他方の引数の親クラスや
インターフェースだった場合の動きは言語仕様上決められているのでしょうか?

例えば、

(1) public String method(List list);
(2) public String method(ArrayList lit);

という2つのメソッドが定義されていた場合、

str = method(new ArrayList());

の場合は (2) が呼ばれ、

str = method(new LinkedList());

の場合は (1) が呼ばれることが決まっていますか?
試してみたところ、Sun jdk1.3.1 ではメソッド定義の順序に
関係なく上記の動きとなるようですが、言語仕様上の記載が
見つけられませんでした。

よろしくお願いします。
tak3
ベテラン
会議室デビュー日: 2004/04/15
投稿数: 80
お住まい・勤務地: 菜の花・銀杏
投稿日時: 2005-03-08 11:50
はい。決められています。

Java言語規定 第2版「15.12.2.2 最も特殊なメソッドの選択」ですね。
1

スキルアップ/キャリアアップ(JOB@IT)