簡體   English   中英

有沒有辦法獲得實現特定方法的所有類?

[英]Is there a way to get all the classes that implement a certain method?

標題不言而喻。 語言是Java。

就在這里。 然而,這是繁瑣且昂貴的工作。 您需要在ClassLoader#getResources()java.io.File幫助下對所有類文件和所有JAR文件進行爬網,並在Class#forName()幫助下加載其所有類,最后檢查方法是否為通過Class#getMethod()

但是,有一些第三方API可以處理繁瑣的工作,但是它仍然很昂貴,因為加載類將導致其static初始化程序被執行。

一種更干凈的方法是利用annotations並注釋所討論的方法,然后利用基於批注搜索類/方法/字段的庫,例如Google Reflections

另一方面,如果事先知道整個程序包名稱或JAR文件名,則工作將不再那么繁瑣和昂貴(無需遞歸地進行操作或加載整個classpath的所有類)。

更新:我記得,我曾經寫過示例代碼來實現類似的目的,您可以在這里找到它。 首先很好,您只需稍作更改即可檢查方法。

不,您通常不能。 如果您可以獲得可用類的完整列表,則可以使用反射檢查每個類-但您不能要求類加載器提供所有可用類的列表。 (例如,它可能正在通過HTTP獲取類,並且可能不知道所有可用文件。)

但是,如果您知道您對jar文件中的類感興趣,則可以打開jar文件,找到其中的所有類文件,然后向類加載器詢問這些類。 這會有點古怪。

這里的大局是什么? 解決這個問題可能有更好的方法。

另外,在Eclipse中 ,您可以簡單地要求:

選中該方法,然后鍵入Ctrl-T

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM