針對反射應用的心得——參數傳遞

進公司後,上頭安排了一個自動任務的開發,大概就是有一個自動任務,然後還有一個分任務,主任務與分任務中間通過zhu外鍵關聯。 

本來自動任務的直接使用反射就可以實現,不過卻需要傳遞參數。通過百度最終解決了。做一個總結,避免忘記。

主任務的代用代碼:

 //根據路徑獲取類信息
            Class classSchedule = Class.forName(scheduleClass);
            //根據參數獲取類的構造函數
            Constructor css =  classSchedule.getConstructor(String.class);
            //執行反射
            Runnable obj = (Runnable) css.newInstance(RunningCd);

其中 css.newInstance(RunningCd) 會直接代用 反射類帶有參數的構造方法。如下面的代碼

 public  BsdSheduleRunningSqlController(String runningCd){
        this.runningCd = runningCd;

    }

    // 自動任務控制器
    @Override
    public void run() {
        System.out.println(runningCd+"");
        System.out.println("第一次查找");
        List<BsdSheduleRunningSql> bsdSheduleRunningSqlList = findRunningSQLByRunningCd(runningCd);
        if(bsdSheduleRunningSqlList.size()>0){
            for(BsdSheduleRunningSql bsSql:bsdSheduleRunningSqlList){
                System.out.println("第二次執行");
                SheduleRunningMothd(bsSql.getRunningSql());
            }
        }else{
            System.out.println("沒有需要的執行任務");
        }

    }

該自動任務業務的部分代碼,真正闡述的並不是自動任務,而是反射技術傳遞參數的應用。

畢竟 不同的框架定義的自動任務方式並不是一樣的。有興趣的同志們可以看一下不同框架的自動任務實現。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章