2

次の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 に答える