我有一个类别/处理程序列表:job1,job2,job3 ... 我想按从Redis获得的顺序执行它们。因此,序列(列表)可以是任何序列job1,job2,job3或job3,job2,job1。每个作业都有自己的实现。我正在尝试执行以下操作:在编写处理程序类的地方,它将采用处理程序序列,并在执行时将按请求的顺序执行。
是否还有其他方法以及如何执行相同的方法。我的方法正确吗?
public class Main
{
public static void main(String[] args) throws NoSuchMethodException, SecurityException
{
List handler = new ArrayList<>();
handler.add("job2");
handler.add("job1");
handler h = new handler(handler);
h.execute();
}
}
下面是我的处理程序类,它将采用序列并执行
public class handler {
List<handler> listhandler;
enum jobs {
job1 {
@Override
public void executeHandler() {
System.out.println("This is the job1");
}
},
job2 {
@Override
public void executeHandler() {
System.out.println("This is the job2");
}
};
public abstract void executeHandler();
}
public handler(List<handler> hand) {
this.listhandler = hand;
}
public void execute() {
for(handler ht : this.listhandler) {
ht.getJobs().executeHandler();
}
}
private jobs getJobs() {
return null;
}
}
答案 0 :(得分:0)
您的handler
类期望使用List<handler>
,但是您正在将字符串添加到列表中。相反,在两种情况下都应使用jobs
。 jobs
枚举本身看起来还不错。
public static class Handler {
List<Job> listhandler; // list of jobs
public Handler(List<Job> hand) {
this.listhandler = hand;
}
public void execute() {
for(Job ht : this.listhandler) {
ht.executeHandler();
}
}
}
public static void main(String args[]) {
List<Job> handler = new ArrayList<>();
handler.add(Job.job2); // add jobs, not job names
handler.add(Job.job1);
Handler h = new Handler(handler);
h.execute();
}