Java 以任意顺序执行处理程序

Java 以任意顺序执行处理程序,java,Java,我有一个类/处理程序列表:job1、job2、job3。。。 我想按照我从Redis得到的顺序执行它们。因此,序列(列表)可以是任何序列job1、job2、job3或job3、job2、job1。每个作业都有自己的实现。我试图做以下工作:在我编写处理程序类的地方,它将采用处理程序序列,执行时将按照请求的序列执行 有没有其他方法可以做到这一点,以及如何执行相同的操作。我的方法正确吗 public class Main { public static void main(S

我有一个类/处理程序列表: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();
        }
    }
公共类主
{
公共静态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
的元素现在应该是什么类型?它不应该是一个作业列表吗?