任务单 #16005

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

开放日期: 2009-04-07 16:13 最后更新: 2009-04-13 17:16

报告人:
属主:
(无)
类型:
状态:
开启
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
9 - Highest
处理结果:
Later
文件:

Details

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)が呼び出される。

任务单历史 (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. » 登录名