讓Java的反射更得簡單

發表于:2014-05-30來源:不詳作者:不詳點擊數: 標簽:軟件測試
反射對Java開發人員來說是最強大的功能之一了。標準的Java API真的很難使用,尤其是搜索和查詢某些特殊的方法的時候。 比如說,我最近在參與的一個項目,要取出一個類的所有

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

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

  ArrayList results = new ArrayList();

  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 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/

原文轉自:http://it.deepinmind.com/java/2014/05/25/reflection-java-made-easy.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97