Java 以任意顺序执行处理程序
我有一个类/处理程序列表:job1、job2、job3。。。 我想按照我从Redis得到的顺序执行它们。因此,序列(列表)可以是任何序列job1、job2、job3或job3、job2、job1。每个作业都有自己的实现。我试图做以下工作:在我编写处理程序类的地方,它将采用处理程序序列,执行时将按照请求的序列执行 有没有其他方法可以做到这一点,以及如何执行相同的操作。我的方法正确吗Java 以任意顺序执行处理程序,java,Java,我有一个类/处理程序列表:job1、job2、job3。。。 我想按照我从Redis得到的顺序执行它们。因此,序列(列表)可以是任何序列job1、job2、job3或job3、job2、job1。每个作业都有自己的实现。我试图做以下工作:在我编写处理程序类的地方,它将采用处理程序序列,执行时将按照请求的序列执行 有没有其他方法可以做到这一点,以及如何执行相同的操作。我的方法正确吗 public class Main { public static void main(S
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();
}
}
公共类主
{
公共静态void main(字符串[]args)抛出NoSuchMethodException、SecurityException
{
列表处理程序=新建ArrayList();
处理人。添加(“作业2”);
处理人。添加(“作业1”);
处理程序h=新处理程序(处理程序);
h、 执行();
}
}
下面是我的处理程序类,它将接受序列并执行
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;
}
}
公共类处理程序{
列表处理程序;
枚举作业{
工作1{
@凌驾
public void executeHandler(){
System.out.println(“这是作业1”);
}
},
工作2{
@凌驾
public void executeHandler(){
System.out.println(“这是作业2”);
}
};
公共摘要void executeHandler();
}
公共处理人(名单手){
this.listhandler=hand;
}
public void execute(){
for(处理程序ht:this.listhandler){
ht.getJobs().executeHandler();
}
}
私人作业getJobs(){
返回null;
}
}
您的处理程序
类需要一个列表
,但您正在向列表中添加字符串。相反,您应该在这两种情况下都使用作业
。作业
枚举本身看起来正常
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();
}
公共静态类处理程序{
List listhandler;//作业列表
公共处理人(名单手){
this.listhandler=hand;
}
public void execute(){
for(作业ht:this.listhandler){
ht.executeHandler();
}
}
}
公共静态void main(字符串参数[]){
列表处理程序=新建ArrayList();
handler.add(Job.job2);//添加作业,而不是作业名称
handler.add(Job.job1);
处理程序h=新处理程序(处理程序);
h、 执行();
}
您的确切问题是什么?我看到的唯一一件事(除了混淆代码样式和命名之外)是,您的Handler
构造函数需要一个Handler
列表,但您尝试给它一个String
列表-listHandler
的元素现在应该是什么类型?它不应该是一个作业列表吗?