【发布时间】:2015-03-17 13:32:56
【问题描述】:
我正在使用反射 API 对 Java 方法进行一些查询。下面是代码 sn-p 找出调用的返回类型,比如new java.lang.StringBuilder().append('a'):
Class<?> c = Class.forName("java.lang.StringBuilder");
Method[] mList = c.getMethods();
for (int i = 0; i < mList.length; i++) {
if (mList[i].getName() == "append"
&& mList[i].getParameterTypes().length == 1
&& mList[i].getParameterTypes()[0].getCanonicalName() == "char") {
System.out.println(mList[i]);
}
}
奇怪的是,输出给出了
公共 java.lang.AbstractStringBuilder java.lang.StringBuilder.append(char)
public java.lang.Appendable java.lang.StringBuilder.append(char) 抛出 java.io.IOException
公共 java.lang.StringBuilder java.lang.StringBuilder.append(char)
而 Java API 规范仅将 StringBuilder 作为返回类型。这是否意味着 append 方法实际上在返回类型上重载了?
【问题讨论】:
标签: java reflection