【发布时间】:2014-07-10 09:45:03
【问题描述】:
我正在编写一些代码来基于其java.lang.reflect.Method 或Constructor 对象创建JavaDoc 链接。我不明白javadoc.exe 是如何知道具有最终数组参数的函数之间的区别
public static final void doSomething(boolean b, int[] ai, String[] as) {
}
和那些有省略号参数的
public static final void doSomethingElse(String... as) {
}
鉴于类对象中没有“省略号”指示。它要么是an array,要么不是一个数组。 name of a class 也包括此指示,通过其 [ 前缀,但同样,只有“array-or-not-array”,没有关于省略号的信息。
最后一个参数数组必须有一个以[]) 结尾的JavaDoc 链接,最后一个参数省略号链接必须以...) 结尾。有没有办法以编程方式区分这一点?
import java.lang.reflect.Method;
public class Test {
public static final void main(String[] ignored) {
Method m = null;
try {
m = Test.class.getDeclaredMethod("doSomething", boolean.class,
int[].class, String[].class);
} catch(Exception x) {
throw new RuntimeException(x);
}
System.out.println(m);
}
public static final void doSomething(boolean b, int[] ai, String... as) {
}
}
输出:
public static final void Test.doSomething(boolean,int[],java.lang.String[])
【问题讨论】:
-
也许这很愚蠢,但是您可以尝试以编程方式实例化这两个可能的签名吗?如果他们都编译,它的
...,否则它只是[]。
标签: java arrays methods javadoc ellipsis