註解,java中提供了一種原程序中的元素關聯任何信息、任何元素的途徑的途徑和方法。java
註解是那些插入到源代碼中使用其餘工具能夠對其進行處理的標籤。註解不會改變程序的編譯方式。java編譯器會對包含註解與不包含註解的代碼生成相同的虛擬機指令。在java中,註解是被當作修飾符(如public/static之類)來使用的。程序員
註釋是供人看的,註解是供程序調用的。一種是程序員寫給另外一個程序員的,一種是程序員寫給計算機解析的。ide
給註解進行註解,用於自定義註解。工具
//@Target(ElementType.METHOD) @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Description { String desc() default ""; String author() default ""; int age() default 18; }
原始類型、String、Class、Annotation、Enumeration
;// @<註解名稱>(<成員名1>=<成員值1>,<成員名2>=<成員值2> ...) @Description(desc = "I'm class annotation") public class AnnotationApp { @Description(desc = "I'm method annotation",author = "rudy") public String eyeColor(){ return "red"; } }
經過反射獲取類、方法、成員上的運行時
註解信息,從而實現動態控制程序運行的邏輯。.net
import Annotation.Description; import org.junit.Test; public class AnnotationTest { @Test public void testParse() throws ClassNotFoundException { // 取出註解 Class cls = Class.forName("Annotation.AnnotationApp"); boolean isExit = cls.isAnnotationPresent(Description.class); if(isExit){ // 作邏輯處理 Description annotation = (Description) cls.getAnnotation(Description.class); System.out.println("get annotation:" + annotation.desc()); }else{ System.out.println("no annotation!"); } } }