Java可变参数函数参数

Ami*_*hum 25 java

我有一个接受可变数量参数的函数:

foo (Class... types);
Run Code Online (Sandbox Code Playgroud)

其中我得到了一定数量的类类型.接下来,我想要一个功能

bar( ?? )
Run Code Online (Sandbox Code Playgroud)

这也将接受可变数量的参数,并且能够验证变量是相同的数字(这很容易)和相同的类型(硬部分)foo.

我怎样才能做到这一点?

编辑:澄清一下,电话可能是:

foo (String.class, Int.class);
bar ("aaa", 32); // OK!
bar (3); // ERROR!
bar ("aa" , "bb"); //ERROR!
Run Code Online (Sandbox Code Playgroud)

此外,foo和bar是同一类的方法.

Jon*_*eet 39

像这样的东西:

private Class<?>[] types;

public void foo(Class<?>... types)
{
    this.types = types;
}

public boolean bar(Object... values)
{
    if (values.length != types.length)
    {
        System.out.println("Wrong length");
        return false;
    }
    for (int i = 0; i < values.length; i++)
    {
        if (!types[i].isInstance(values[i]))
        {
            System.out.println("Incorrect value at index " + i);
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

例如:

test.foo(String.class, Integer.class);
test.bar("Hello", 10); // Returns true
test.bar("Hello", "there"); // Returns false
test.bar("Hello"); // Returns false
Run Code Online (Sandbox Code Playgroud)

(显然你会想要改变报告结果的方式......可能使用无效数据的例外.)