有什么方法可以编程方式区分final-param数组和final-param省略号?

时间:2014-05-21 16:05:04

标签: java arrays methods javadoc ellipsis

我正在编写一些代码来创建基于其java.lang.reflect.MethodConstructor对象的JavaDoc链接。我不明白javadoc.exe如何知道具有最终数组参数的函数之间的区别

public static final void doSomething(boolean b, int[] ai, String[] as)  {
}

和具有省略号参数

的那些
public static final void doSomethingElse(String... as)  {
}

鉴于没有&#34;省略号&#34;类对象中的指示。它是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[])

1 个答案:

答案 0 :(得分:4)

是。你可以致电Method.isVarargs();。显然,varargs可能只出现在参数列表的末尾,所以如果method.getParameterTypes()的最后一个元素是数组调用Method.isVarargs()