Java 可变参数函数参数

标签 java

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

foo (Class... types);

我在其中获得了一定数量的类类型。接下来,我想要一个函数

bar( ?? )

这也将接受可变数量的参数,并且能够验证变量是否与 foo

我该怎么做?

编辑:澄清一下,调用可能是:

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

另外,foo 和 bar 是同一个类的方法。

最佳答案

类似这样的:

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;
}

例如:

test.foo(String.class, Integer.class);
test.bar("Hello", 10); // Returns true
test.bar("Hello", "there"); // Returns false
test.bar("Hello"); // Returns false

(显然您会想要更改结果的报告方式...可能对无效数据使用异常。)

关于Java 可变参数函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635229/

相关文章:

java - 添加 spring-boot-admin-starter-client 依赖项后无法解析占位符

java - 开始使用 Java 编程

java - 系统命令在 Ruby 中不起作用并返回 false?

java - 'unique' 在 TotallyLazy 库中如何工作

javassist 从第三方库/jar 获取 CtClass

java - 另一个线程的代码如何在主线程上运行?

Java shl和shr填充问题

java - 使用哪种数据结构来存储条目及其时间戳(按排序顺序)

java - 在多维数组中 move 对象

java - Android studio E/MediaRecorder:无效状态调用停止 : 4