Java 有没有办法通过编程区分final param数组和final param省略号?
我正在编写一些代码,以基于其Java 有没有办法通过编程区分final param数组和final param省略号?,java,arrays,methods,javadoc,ellipsis,Java,Arrays,Methods,Javadoc,Ellipsis,我正在编写一些代码,以基于其java.lang.reflect.Method或构造函数对象创建JavaDoc链接。我不明白javadoc.exe如何知道具有最终数组参数的函数之间的区别 public static final void doSomething(boolean b, int[] ai, String[] as) { } 还有那些有省略号参数的 public static final void doSomethingElse(String... as) { } 假设类对象中没
java.lang.reflect.Method
或构造函数
对象创建JavaDoc链接。我不明白javadoc.exe
如何知道具有最终数组参数的函数之间的区别
public static final void doSomething(boolean b, int[] ai, String[] as) {
}
还有那些有省略号参数的
public static final void doSomethingElse(String... as) {
}
假设类对象中没有“省略号”指示。它要么是数组,要么不是数组。通过其[
前缀,也包括此指示,但同样,仅“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[])
是的。您可以调用
Method.isVarargs();
。显然,varargs可能只出现在参数列表的末尾,因此如果Method.getParameterTypes()
的最后一个元素是数组调用Method.isVarargs()
是的。您可以调用Method.isVarargs()显然,varargs可能只出现在参数列表的末尾,因此如果method.getParameterTypes()
的最后一个元素是数组调用method.isVarargs()
也许这很傻,但是你能尝试用编程的方式实例化两个可能的签名吗?如果它们都编译,那么它的..
,否则它只是[]
。也许这很傻,但是你能尝试用编程的方式实例化两个可能的签名吗?如果它们都编译,那么它的..
,否则它只是[]
。太好了。谢谢。我被困在“省略号”这个词上了。太好了。谢谢。我被困在“省略号”这个词上了。