如何判断一个方法是否有使用反射的可变参数?
这是一个示例代码
package org.example;
import java.lang.reflect.Method;
class TestRef {
public void testA(String ... a) {
for (String i : a) {
System.out.println(i);
}
}
public static void main(String[] args){
Class testRefClass = TestRef.class;
for (Method m: testRefClass.getMethods()) {
if (m.getName() == "testA") {
System.out.println(m);
}
}
}
}
输出是
public void org.example.TestRef.testA(java.lang.String[])
因此,该方法的签名被报告为一个String数组。
反射库中是否有任何意思我可以说这个方法最初被声明为可变参数?
反射库中是否有任何意思我可以说这个方法最初被声明为可变参数?
对。 java.lang.reflect.Method.isVarArgs()
。
但是,如果您试图以人类可读形式组装和显示方法签名,则这仅适用。 如果您需要使用反射调用varargs方法,则必须将可变参数参数组装为数组类型的参数。
真的没有区别
static public void main(String[] args)
static public void main(String... args)
实际上,在Java中添加可变参数的过程中,引入了非常晚的符号。 詹姆斯高斯林提出这个建议,他认为这是可靠的。 在此之前,相同的[]表示可变参数。
链接地址: http://www.djcxy.com/p/50193.html上一篇: How to tell a method has a varargs argument using reflection?
下一篇: What if there was no future.isDone check in the invokeAll method