2

我有以下两段代码:

public class C {
    public void method1(String[] args) {

    }

    public void method2(String... args) {

    }
}

然后我使用反射获得上述方法的方法实例。

Method m1 = nil;
Method m2 = nil;
Class c = Class.forName("C");
for (Method m : c.getMethods()) {
    if (m.getName().equals("method1")) m1 = m;
    if (m.getName().equals("method2")) m2 = m;
}

m1.getParameters() 和 m2.getParameters() 返回等于类实例的列表。m1 的参数和 m2 的参数都表示为数组。但实际上它们并不相同。编译器不允许

m1("a", "b");

问题是:

是否有任何标志指定参数是可变参数还是常规数组?

4

1 回答 1

2

类 java.lang.reflect.Method 有方法 isVarArg()。它显示方法的最后一个参数是否为可变参数。

于 2011-12-23T06:12:20.917 回答