好程式設計師教程分享Java註解和運用註解程式設計
好程式設計師教程分享 Java註解和運用註解程式設計 , 註解 和使用 :
先來看下概念首先從註釋來看;
註釋:給程式碼新增說明和解釋,註釋幫助開發人員理解程式。(Comment) 說白點就是註釋是給人看的。
註解:給程式碼新增說明 解釋 ,這個說明給程式使用。(Annotation)
從 JDK 5.0 開始,Java 增加了對後設資料(MetaData) 的支援, 也就是Annotation(註解)。
三個基本的 Annotation:
@Override:限定重寫父類方法, 該註解只能用於方法
@Deprecated:用於表示某個程式元素(類, 方法等)已過時
@SuppressWarnings: 抑制編譯器警告.
什麼是註解
Annotation其實就是程式碼裡的特殊標記, 它用於替代配置檔案,也就是說,傳統方式透過配置檔案告訴類如何執行,有了註解技術後,開發人員可以透過註解告訴類如何執行。在Java技術裡註解的典型應用是:可以透過反射技術去得到類裡面的註解,以決定怎麼去執行類。
註解技術的要點:
如何定義註解
如何反射註解,並根據反射的註解資訊,決定如何去執行類
2.1 自定義註解:
定義新的 Annotation 型別使用@interface關鍵字
宣告註解的屬性
註解屬性的作用:原來寫在配置檔案中的資訊,可以透過註解的屬性進行描述。
Annotation的屬性宣告方式:String name();
屬性預設值宣告方式:Stringname() default “xxx”;
特殊屬性value:如果註解中有一個名稱value的屬性,那麼使用註解時可以省略value=部分,如@MyAnnotation(“xxx")
特殊屬性value[];
註解屬性的型別可以是:
String型別
基本資料型別
Class型別
列舉型別
註解型別
以上型別的一維陣列
案例演示1 建立和使用註解
public
@interface
MyAnnocation
{
String
name
();
int
num
()
default
10
;
MyAnnocation2 anno
();
}
public
@interface
MyAnnocation2
{
String
value
();
}
public
class
Demo1
{
@MyAnnocation
(
name
=
"哈哈"
,
num
=
50
,
anno
=
@MyAnnocation2
(
value
=
"xxx"
))
public
void
show
() {
System
.
out
.
println
(
"xxxxxxx"
);
}
}
2.2 JDK的元 Annotation
元 Annotation指修飾Annotation的Annotation。
@Retention : 只能用於修飾一個 Annotation 定義, 用於指定該 Annotation 可以保留的域, @Rentention 包含一個 RetentionPolicy 型別的成員變數, 透過這個變數指定域。
RetentionPolicy.CLASS: 編譯器將把註解記錄在 class檔案中. 當執行 Java 程式時, JVM 不會保留註解. 這是預設值
RetentionPolicy.RUNTIME:編譯器將把註解記錄在 class檔案中. 當執行 Java 程式時, JVM 會保留註解. 程式可以透過反射獲取該註釋
RetentionPolicy.SOURCE: 編譯器直接丟棄這種策略的註釋
@Target :指定註解用於修飾類的哪個成員.@Target 包含了一個名為value,型別為ElementType的成員變數。
@Documented:用於指定被該元 Annotation 修飾的Annotation類將被 javadoc 工具提取成文件。
@Inherited:被它修飾的 Annotation 將具有繼承性.如果某個類使用了被 @Inherited 修飾的Annotation,則其子類將自動具有該註解。
案例演示2 使用反射獲取註解資訊
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
PersonInfo
{
String
name
();
int
age
()
default
20
;
String
gender
();
}
public
class
PersonOpe
{
@PersonInfo
(
name
=
"李四"
,
age
=
20
,
gender
=
"男"
)
public
void
show
(
String
name
,
int
age
,
String
gen
) {
System
.
out
.
println
(
name
);
System
.
out
.
println
(
age
);
System
.
out
.
println
(
gen
);
}
}
public
class
Demo2
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
PersonOpe ope
=
new
PersonOpe
();
Class
<?>
class1
=
PersonOpe
.
class
;
Method method
=
class1
.
getMethod
(
"show"
,
String
.
class
,
int
.
class
,
String
.
class
);
PersonInfo annotation
=
method
.
getAnnotation
(
PersonInfo
.
class
);
String
name
=
annotation
.
name
();
int
age
=
annotation
.
age
();
String
gender
=
annotation
.
gender
();
method
.
invoke
(
ope
,
name
,
age
,
gender
);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2651635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java分享SpringMVC之@ResponseBody註解程式設計師JavaSpringMVC
- 好程式設計師分享SpringBoot須掌握的註解程式設計師Spring Boot
- 好程式設計師Java培訓分享註解與反射原理說明程式設計師Java反射
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java培訓Java最常用的五個註解程式設計師Java
- Spring 註解程式設計之模式註解Spring程式設計模式
- 好程式設計師Java教程分享List介面程式設計師Java
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 好程式設計師Java教程分享Java語法程式設計師Java
- 重走JAVA程式設計之路(二)註解Java程式設計
- Java程式設計師必須掌握的5個註解!Java程式設計師
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Java教程分享詳細瞭解Javasax解析器程式設計師Java
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 程式設計師筆記——springboot 之常用註解程式設計師筆記Spring Boot
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java教程解讀什麼是swing程式設計師Java
- 好程式設計師Java教程解讀JDBC是什麼程式設計師JavaJDBC
- 好程式設計師Java教程分享Zookeeper基本原理與運用場景程式設計師Java
- 好程式設計師Java教程分享Java開發主流框架程式設計師Java框架
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Java教程分享Jmeter效能測試程式設計師JavaJMeter
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- 好程式設計師技術教程分享JavaScript運動框架程式設計師JavaScript框架
- 好程式設計師分享placeholder屬性詳解程式設計師
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 好程式設計師Java教程Java動態代理機制詳解程式設計師Java
- 好程式設計師Java教程分享Java物件導向與程式導向程式設計師Java物件
- 好程式設計師Java教程分享Java中this的幾種用法程式設計師Java
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- 好程式設計師Java教程分享Vue外掛之Axios程式設計師JavaVueiOS
- 好程式設計師Java教程分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師web前端教程分享怎麼用promise解決回撥和非同步程式設計師Web前端Promise非同步
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java