我正在编写一些代码来创建基于其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还通过其[
前缀包含此指示,但同样仅包括&#34; array-or-not-array&#34;,此处没有关于省略号的信息。< / p>
Last-param-arrays必须具有以[])
结尾的JavaDoc链接,并且last-param-ellipsis链接必须以...)
结尾。有没有办法以编程方式区分这个?
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[])
答案 0 :(得分:4)
是。你可以致电Method.isVarargs();
。显然,varargs可能只出现在参数列表的末尾,所以如果method.getParameterTypes()
的最后一个元素是数组调用Method.isVarargs()
。