Java註釋Override Deprecated SuppressWarnings詳解
五、如何使用反射讀取註釋 前面討論瞭如何自定義註釋。但是自定義了註釋又有什麼用呢?這個問題才是J2SE5.0提供註釋的關鍵。自定義註釋當然是要用的。那麼如何用呢?解決這個問題就需要使用java最令人興奮的功能之一:反射(reflect)。在以前的JDK版本中,我們可以使用反射得到類的方法、方法的引數以及其它的類成員等資訊。那麼在J2SE5.0中同樣也可以象方法一樣得到註釋的各種資訊。 在使用反射之前必須使用import java.lang.reflect.* 來匯入和反射相關的類。 如果要得到某一個類或介面的註釋資訊,可以使用如下程式碼: Annotation annotation = TestAnnotation.class.getAnnotation(MyAnnotation.class);如果要得到全部的註釋資訊可使用如下語句:Annotation[] annotations = TestAnnotation.class.getAnnotations();或Annotation[] annotations = TestAnnotation.class.getDeclaredAnnotations();getDeclaredAnnotations與getAnnotations類似,但它們不同的是getDeclaredAnnotations得到的是當前成員所有的註釋,不包括繼承的。而getAnnotations得到的是包括繼承的所有註釋。 如果要得到其它成員的註釋,可先得到這個成員,然後再得到相應的註釋。如得到myMethod的註釋。
Method method = TestAnnotation.class.getMethod("myMethod", null); Annotation annotation = method.getAnnotation(MyAnnotation.class); 注:要想使用反射得到註釋資訊,這個註釋必須使用 @Retention(RetentionPolicy.RUNTIME)進行註釋。總結 註釋是J2SE5.0提供的一項非常有趣的功能。它不但有趣,而且還非常有用。EJB3規範就是藉助於註釋實現的。這樣將使EJB3在實現起來更簡單,更人性化。還有Hibernate3除了使用傳統的方法生成hibernate對映外,也可以使用註釋來生成hibernate對映。總之,如果能將註釋靈活應用到程式中,將會使你的程式更加簡潔和強大。