Reflections讓Java的反射更得簡單

jopen 10年前發布 | 47K 次閱讀 Java開發 Reflections

反射對Java開發人員來說是最強大的功能之一了。標準的Java API真的很難使用,尤其是搜索和查詢某些特殊的方法的時候。

比如說,我最近在參與的一個項目,要取出一個類的所有返回string,不帶參數的,且以to開頭的public方法,寫出來的代碼大概像下面這樣:

ArrayList<Method> results = new ArrayList<Method>();    
for (Method m : String.class.getDeclaredMethods()) {               
      if (Modifier.isPublic(m.getModifiers()) &&          
            m.getReturnType().equals(String.class) &&   
            m.getParameterCount() == 0 &&               
            m.getName().startsWith("to")) {             
            results.add(m);                                 
     }                                                   
}    

因此你可以想像一下,如果有比這還復雜的情況,這段代碼最后會成什么樣。我找了一遍后發現Reflections這個庫可以讓這樣工作變得想當簡單。同樣的查詢用它來寫的話會是這樣的:

Set<Method> results = getMethods(String.class,
      withModifier(Modifier.PUBLIC),
      withReturnType(String.class),    
      withParametersCount(0),
      withPrefix("to"));  

有個這個庫還能進行一些更為復雜的查詢。想了解關于它的更多信息的話,它的官方文檔是個不錯的選擇。希望將來你考慮在Java中進行一些反射相關的操作的話會考慮使用一下這個庫。

下下面有些相關的資料鏈接:

https://github.com/ronmamo/reflections

http://docs.oracle.com/javase/tutorial/reflect/

來自:讓Java的反射更得簡單

英文原文鏈接

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!