Java 可运行接口和相关对象
我是java新手,我读过代码剪贴,想知道什么时候我们需要这样一个更新程序或者一个实现Runnable接口的类。 要调用更新程序,他们会这样做Java 可运行接口和相关对象,java,Java,我是java新手,我读过代码剪贴,想知道什么时候我们需要这样一个更新程序或者一个实现Runnable接口的类。 要调用更新程序,他们会这样做 public Runnable updater = new Runnable() { @Override public void run() { obj.notifyDataSetChanged(); } }; 我不明白这背后的逻辑 我不知道上下文的其余部分,但通过
public Runnable updater = new Runnable()
{
@Override
public void run() {
obj.notifyDataSetChanged();
}
};
我不明白这背后的逻辑 我不知道上下文的其余部分,但通过这种方式,您可以在对象
处理程序中选择不同的“行为”。由于我不知道您看到这个示例的代码的上下文,我将尝试用不同的类和方法来解释它:
例如,如果您希望能够在同一段代码中执行不同的行为,那么您可以创建新的行为或从现有行为中进行选择,您可以:
handler = new Handler();
handler.post(updater);
这种情况非常常见,因此在Java 8中,您可以通过以下方式编写发布的代码:
class Operation {
Runnable operation = null;
private int result;
private int op1;
private int op2;
public Example(int op1, int op2) {
this.op1 = op1;
this.op2 = op2;
}
// ... more code ...
Runnable sum = new Runnable() {
public void run() { result = op1 + op2; }
}
Runnable minus = new Runnable() {
public void run() { result = op1 - op2; }
}
// ... more code ...
public void selectBehaviour(String behaviourName) {
// ... more code ...
// select behaviour
if("SUM".equals(behaviourName)) {
operation = sum;
} else if("MINUS".equals(behaviourName)) {
operation = minus;
} else {
// ... more code ...
}
}
public void perform() {
operation.run();
}
int getResult() {
return result;
}
}
这就不那么冗长了。我猜处理程序
实例有一个队列,我们可以通过调用post
方法来排列Runnable
实例。然后,处理程序
可以有一个专用的线程
,它从队列中获取可运行的
实例,并调用可运行的.run()
。
public Runnable updater = () -> { obj.notifyDataSetChanged(); }