下面是一个示例代码
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[])
因此,该方法的签名被报告为接受一个字符串数组。
在反射库中有什么意思吗?我可以告诉您,最初声明的方法是来获取一个varargs吗?
发布于 2010-06-14 17:52:46
,反射库中有什么意思吗?我可以告诉您,这个方法最初是声明为接受varargs的吗?
是啊。java.lang.reflect.Method.isVarArgs()
。
但是,只有当您试图以人类可读的形式组装和显示方法签名时,才能使用此方法签名。如果需要使用反射调用varargs方法,则必须将varargs参数组装为数组类型的参数。
发布于 2010-06-14 17:51:55
真的没什么区别
static public void main(String[] args)
static public void main(String... args)
实际上..。在java中添加vararg的过程中引入了非常晚的标记。詹姆斯·高斯林提出的,他认为它更可爱。在此之前,相同的[]表示vararg。
https://stackoverflow.com/questions/3042050
复制相似问题