以任何顺序执行处理程序

时间:2018-07-11 14:25:25

标签: java

我有一个类别/处理程序列表: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;
        }


     }

1 个答案:

答案 0 :(得分:0)

您的handler类期望使用List<handler>,但是您正在将字符串添加到列表中。相反,在两种情况下都应使用jobsjobs枚举本身看起来还不错。

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();
}