如何检查方法中的所有参数是否都是特定类型?

How to check if all arguments in method are of specific type?

我有一个方法,它接受可变数量的参数:

public void test(Object[] ... args) {}

如何检查所有 个参数是否为双[]?

遍历参数并检查:

if (obj instanceof Double)

Object[] 表示数组可以包含双精度值和整数值。

循环并确保每个 Object[] 都是 Double[]。请注意,您不能在此处使用 primitive double,因为它不是对象。

boolean allDoubleArr = true;
for(Object[] o : args) {
    if(!(o instanceof Double[])) {
        allDoubleArr = false;
        break;
    }
}

您可以通过将您的方法的签名更改为这样来让编译器静态类型检查它:

public void test(Double[] ... args) {}

现在 java 编译器将强制执行它,以便 test() 只能使用 Double[] 参数调用。

如果你真的需要让它成为动态类型检查,那么我投票支持@George Mulligan 的回答。