这是一个风格问题。我想用一个变量
on
循环两次,第一次为false,第二次为true。哪个更清晰:
A)
for (final boolean on : new boolean[] { false, true} )
{
doStuffBasedOnABooleanFlag(on);
}
B)
for (int i = 0; i < 2; ++i)
{
final boolean on = (i == 1);
doStuffBasedOnABooleanFlag(on);
}
C) 其他事项
编辑:不经意的解释下的墨菲定律出现了… 我最初查看的用例是这样的,而不是基于布尔标志做某些事情:
for (final boolean on : new boolean[] { false, true} )
{
JButton button = on ? onButton : offButton;
button.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent event) {
doStuffLaterBasedOnABooleanFlag(on);
}
}
}
但是我认为我喜欢 Brendan 的答案,我会将循环内容重构为一个单独的方法:
doStuffBasedOnABooleanFlag(false);
doStuffBasedOnABooleanFlag(true);
...
private void doStuffBasedOnABooleanFlag(final boolean on)
{
JButton button = on ? onButton : offButton;
button.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent event) {
doStuffLaterBasedOnABooleanFlag(on);
}
}
}
for (boolean option : Arrays.asList(false, true))
- Alexander Pozdneev