我正在開發一個應用程序(Quartz scheduler),我們有一個工作類負責實際執行工作,我們需要告知/傳遞作業類的名稱同時在Quartz調度器中創建一個觸發器。查找所有實現特定接口的類
我想爲所有想使用API的人提供一個擴展點(除了我將作爲API的一部分提供的一些通用作業之外)。這個想法是創建一個(標記)接口,如果任何人想將他們的類聲明爲調度器作業類,他們所要做的就是(聲明)實現接口。
我不知道如何找到哪些類遵循合同(通過實現接口),以便我可以將它們展示給希望在調度程序中調度觸發器的用戶。
我的要求是不在運行時加載類,而是顯示實現所需接口的類的用戶列表,以便用戶可以選擇類並將類名傳遞給調度程序。這是Quartz調度器,最後將負責創建一個類的實例。
任何人都可以建議我如何實現上述目標,或者是否有其他更好的方法來實現我想要做的事情?
編輯
我通過ServiceLoader的文檔去了,似乎是實現服務一個具有創建在META-INF文件夾中的文件,實現類的名字,這使我認爲如果我的API的用戶需要20個不同的實現,他必須在文件中放入20個條目,這對我來說似乎對最終用戶來說是很多額外的工作,因爲每個工作類將被創建用於執行特定工作,並且可以成爲100個工作班。
如果我的假設錯誤,請糾正我。
另一個嘗試是創建一個註釋,然後搜索註釋的類。這裏http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime說如何實現它。 – polypiel 2012-04-03 10:21:43
這會有幫助嗎? [鏈接](http://www.javaworld.com/javaworld/javaqa/2003-07/02-qa-0725-classsrc2.html?page=1) – titogeo 2012-04-12 09:20:04