gpt4 book ai didi

java - 带有函数参数的参数化 Runnable

转载 作者:行者123 更新时间:2023-11-30 08:52:09 25 4
gpt4 key购买 nike

我想创建一个实现 Runnable 的“通用”类并有一些参数,包括功能。我是这样开始的:

public static class ParameterizedTask implements Runnable {
private String log;
//other parameters

@Override
public void run() {
//do stuff with parameters
}

//getters and setters

此外,我希望能够传递一个特定的函数,它可以使用其他参数。 此功能将在run()中使用.

我想用 Callable ,但我不知道如何完成它。

我的目标是拥有一个通用的 Runnable我可以在 Android 中使用它来显示 AlertDialog来自线程内部(这就是为什么我需要 HandlerRunnable )。

你有什么想法吗?我想做这样的事情:

Utils.ParameterizedTask task = new Utils.ParameterizedTask();
task.setLog(...).setRandomParam(...).setFunction(<Stuff with parameters);
Handler handler = new Handler(Looper.getMainLooper());
handler.post(task);

在这里,<Stuff with parameters>代表什么run()应该执行。

最佳答案

您可以定义一个名为 TaskExecutor 的接口(interface),如下所示:

public interface TaskExecutor {
public void execute(String log)
}

然后您可以按如下方式修改您的 ParameterizedTask 类:

public static class ParameterizedTask implements Runnable {
private String log;
//other parameters

private TaskExecutor taskExecutor;

public ParameterizedTask(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}

@Override
public void run() {
taskExecutor.execute(log);
}
}

然后您可以定义要在 run 方法内执行的不同行为,如下所示:

ParameterizedTask task = new ParameterizedTask(new TaskExecutor() { 
public void execute(String log) {
//doSomething with the log
}
}
);

关于java - 带有函数参数的参数化 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com