我是java的新手,想知道只有在布尔值为真时才能执行某些操作。
注意:我需要多次检查。
我使用这种方法,但我想知道另一种方式:
private void Check() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (boolean) {
//Do Something...
} else {
Check();
}
}
}, 10);
}
答案 0 :(得分:2)
试试这个:
while(!aBoolean); //mind the semicolon.
//do something
但是这将使用更多的CPU。你可能想把它放在线程和睡眠线程中一段时间。
new Thread(new Runnable() {
public void run() {
while (!aBoolean) {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
//do something
}
}).start();
答案 1 :(得分:0)
您可以使用javafx.beans.property.SimpleBooleanProperty
代替boolean
。然后你可以做
import javafx.beans.property.SimpleBooleanProperty;
//status is a SimpleBooleanProperty
SimpleBooleanProperty status = new SimpleBooleanProperty(false);
status.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue) {
//do something
}
}
});
Check变得毫无意义,因为只有在值发生变化时才会调用changed(...)
- 函数。
这也不会一直创建新的Runnables
。
缺点是,status = true
变为status.set(true)
而if (status)
变为if (status.get())
,您必须在任何地方更改此内容。
答案 2 :(得分:-2)
我建议您这样做:
//here status is a boolean variable
if (status) {
//positive work`enter code here`
} else {
// negative work
}