待辦事項 #16005

プリミティブ型とラッパー型でのオーバーロードがある場合にメソッドの同定を誤る

啟用日期: 2009-04-07 16:13 最後更新: 2009-04-13 17:16

回報者:
負責人:
(無)
類型:
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
9 - 最高
處理結果:
Later
檔案:

細節

public class Hoge {
	public static void piyo(int i) {
		System.out.println("#piyo(int)");
	}
	public static void piyo(Integer i) {
		System.out.println("#piyo(Integer)");
	}
	public static void main(String[] args) throws Exception {
		FastReflect.invoke("test.Hoge", null, "piyo", Integer.valueOf(3));
	}
}

とした場合に、piyo(Integer)が呼ばれるべきところ、piyo(int)が呼び出される。

Ticket History (2/2 Histories)

2009-04-07 16:13 Updated by: nagise
  • New Ticket "プリミティブ型とラッパー型でのオーバーロードがある場合にメソッドの同定を誤る" created
2009-04-13 17:16 Updated by: matya
  • 處理結果 Update from to Later
評語

nagiseさん。ご指摘ありがとうございます。 この件ですが、ご指摘のソースのように、 >FastReflect.invoke("test.Hoge", null, "piyo", Integer.valueOf(3)); とあるように、FastReflectでは基本的にメソッド検索において、パラメータ型を意味するClass[] typesを設定せず、指定パラメータを元にパラメータ型を内部で作成しています。 このままの条件を維持した場合、オートボクシングの仕様上、プリミティブ型から、パラメータ型を取得した場合、途中でラッパークラスに変換されてしまうので、無理があります。 この形を維持せず、別途パラメータ型を指定する方法の実装が、 >FastReflect.invokeTo()があるので、これに対して、チケット#16005の修正を行いたいと考えております。

Attachment File List

No attachments

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入