sha*_*nar 2 java logical-operators
有没有办法对同一个变量进行连续的逻辑运算?
例:
if (animation.getStatus() == Animation.Status.PAUSED || animation.getStatus() == Animation.Status.STOPPED) {
animation.playFromStart();
} else if (animation.getStatus() == Animation.Status.RUNNING) {
animation.stop();
}
Run Code Online (Sandbox Code Playgroud)
你在if子句中看到我检查了animation.getStatus()两次,一次是暂停,一次是停止.有没有办法让它变得像animation.getStatus() == Animation.Status.PAUSED || Animation.Status.STOPPED?
我确定已经问过这个问题,但我真的不知道要搜索什么,所以如果这是重复的话,我很抱歉.
没有; Java语法是不可变的.
有几个选项,但最简单的是重构,作为奖励使其清晰,例如,
if (animation.shouldReplay()) {
animation.playFromStart();
} else if (animation.shouldStop() {
animation.stop();
}
Run Code Online (Sandbox Code Playgroud)
或更深层次,例如,
animation.controlFromCurrentStatus();
Run Code Online (Sandbox Code Playgroud)
如果您不愿意封装,只需导入状态有助于:
Animation.Status currentStatus = animation.getStatus();
if (currentStatus == PAUSED || currentStatus == STOPPED) {
animation.playFromStart();
} else if (currentStatus == RUNNING) {
animation.stop();
}
Run Code Online (Sandbox Code Playgroud)
或者制作它们enum,无论如何它们应该可以说是:
switch (currentStatus) {
case PAUSED:
case STOPPED:
animation.playFromStart();
break;
case RUNNING:
animation.stop();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |