我们如何做一个For-Each断言?

Pac*_*ier 4 java assert

大家好,我想知道如何在断言中放入整个代码块?

例如,我有一个数组,我想对数组的每个值进行断言.这就是我的代码:

for (int value : values) {
    assert Within(value, x, y);
}
Run Code Online (Sandbox Code Playgroud)

但是当然如果我在没有-ea关闭断言的情况下运行程序,循环仍然存在.

我想知道如何将整个循环放在断言语句中?

编辑:

argh dang Java有时太刻板了,我最终做了这样的功能:

assert Every(value, new F1<Boolean, Integer>() {
    Boolean Call(Integer value) {
        return Within(value, 0, 255);
    }
});
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 5

您可以使用方法

public boolean check(int... values) {
    for (int value : values) 
        if(!Within(value, x, y)) return false;
    return true;
}

assert check(values);
Run Code Online (Sandbox Code Playgroud)

如果你有很多检查,另一种方法是测试断言

boolean assertEnabled = false;
assert assertEnabled = true;
if (assertEnabled) {
   // do lots of checks
}
Run Code Online (Sandbox Code Playgroud)

  • 嗯,我已经想到了这一点,但是对于一个简单的断言来说,这不是太多的样板代码吗? (2认同)