更新時間:2020-06-30 15:29:56 來源:動力節點 瀏覽2586次
Java注解是附加在代碼中的一些元信息,用于一些工具在編譯、運行時進行解析和使用,起到說明、配置的功能。
注解不會也不能影響代碼的實際邏輯,僅僅起到輔助性的作用。包含在java.lang.annotation包中。
元注解是指注解的注解。包括 Retention Target Document Inherited四種。
1.1、 Retention:定義注解的保留策略
Java代碼
@Retention(RetentionPolicy.SOURCE)?//注解僅存在于源碼中,在class字節碼文件中不包含?
@Retention(RetentionPolicy.CLASS)?//默認的保留策略,注解會在class字節碼文件中存在,但運行時無法獲得,?
@Retention(RetentionPolicy.RUNTIME)//注解會在class字節碼文件中存在,在運行時可以通過反射獲取到
1.2、 Target:定義注解的作用目標
Java代碼
@Target(ElementType.TYPE)?//接口、類、枚舉、注解?
@Target(ElementType.FIELD)?//字段、枚舉的常量?
@Target(ElementType.METHOD)?//方法?
@Target(ElementType.PARAMETER)?//方法參數?
@Target(ElementType.CONSTRUCTOR)?//構造函數?
@Target(ElementType.LOCAL_VARIABLE)//局部變量?
@Target(ElementType.ANNOTATION_TYPE)//注解?
@Target(ElementType.PACKAGE)?///包
elementType可以有多個,一個注解可以為類的,方法的,字段的等等
1.3、 Document:說明該注解將被包含在javadoc中
1.4、 Inherited:說明子類可以繼承父類中的該注解
下面是自定義注解的一個例子
Java代碼
@Retention(RetentionPolicy.RUNTIME)?
@Target(ElementType.METHOD)?
public?@interface?HelloWorld?{?
public?String?name()?default?"";?
}
Java代碼
public?class?SayHello?{?
@HelloWorld(name?=?"?小明?")?
public?void?sayHello(String?name)?{?
System.out.println(name?+?"say?hello?world!");?
}//www.heatpress123.net?
}
java的反射機制可以幫助,得到注解,代碼如下:
Java代碼
public?class?AnnTest?{?
public?void?parseMethod(Class?clazz)?{?
Object?obj;?
try?{?
//?通過默認構造方法創建一個新的對象?
obj?=?clazz.getConstructor(new?Class[]?{}).newInstance(?
new?Object[]?{});?
for?(Method?method?:?clazz.getDeclaredMethods())?{?
HelloWorld?say?=?method.getAnnotation(HelloWorld.class);?
String?name?=?"";?
if?(say?!=?null)?{?
name?=?say.name();?
System.out.println(name);?
method.invoke(obj,?name);?
}?
}?
}?catch?(Exception?e)?{?
e.printStackTrace();?
}?
}?
public?static?void?main(String[]?args)?{?
AnnTest?t?=?new?AnnTest();?
t.parseMethod(SayHello.class);?
}?
}
以上就是動力節點java培訓機構的小編針對“Java自定義注解接口實現方案”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習