让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性
文章目錄
- 單行和多行注釋
- 文檔注釋(Java特有)
- Annotation(注解)的理解
- 常見的Annotation示例
- IDEA注釋注解快捷鍵及模板
- 自定義 Annotation
- JDK 中的元注解
單行和多行注釋
注釋的內(nèi)容不參與編譯,即編譯以后的.class的字節(jié)碼文件中不包含注釋的內(nèi)容。
作用:
①對程序進行解釋說明,增強可讀性。
②調(diào)試所寫的代碼。(將某代碼注釋來debug)
格式:
單行注釋:以//開頭
多行注釋:注釋內(nèi)容用/*和*/一對包住
文檔注釋(Java特有)
注釋內(nèi)容可以被JDK提供的工具javadoc解析,生成以網(wǎng)頁文件形式展現(xiàn)的該程序的說明文檔。
/** 文檔注釋: @author Yeman @version v1.0 */public class HelloJava{/*多行注釋:如下的main方法是程序的入口!main的格式是固定的!*//**文檔注釋:如下的main方法是程序的入口!*/ public static void main(String[] args){//單行注釋:如下的語句表示輸出到控制臺。System.out.println("Hello Java!!!");} }Annotation(注解)的理解
從 JDK 5.0 開始, Java 增加了對元數(shù)據(jù)(MetaData) 的支持,也就是Annotation(注解)。
Annotation 其實就是代碼里的特殊標記,這些標記可以在編譯,類加載,運行時被讀取,并執(zhí)行相應(yīng)的處理。通過使用 Annotation,程序員可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。代碼分析工具、開發(fā)工具和部署工具可以通過這些補充信息進行驗證或者進行部署。
Annotation 可以像修飾符一樣被使用,可用于修飾包、類、構(gòu)造器、方法、成員變量、參數(shù)、局部變量的聲明,這些信息被保存在 Annotation 的 “name=value” 對中。
在JavaSE中,注解的使用目的比較簡單,例如標記過時的功能,忽略警告等。在JavaEE/Android中注解占據(jù)了更重要的角色,例如用來配置應(yīng)用程序的任何切面,代替JavaEE舊版中所遺留的繁冗代碼和XML配置等。
未來的開發(fā)模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,現(xiàn)在的Struts2有一部分也是基于注解,注解是一種趨勢,一定程度上可以說:框架 = 注解 + 反射 + 設(shè)計模式。
常見的Annotation示例
示例一:生成文檔相關(guān)的注解
@author 開發(fā)該類模塊的作者,多個作者之間使用","分隔開
@version 該類模塊的版本
@see 參考轉(zhuǎn)向,也就是相關(guān)主題
@since 從哪個版本開始增加的
@param 對方法中某參數(shù)的說明,如果沒有參數(shù)就不能寫
@return 對方法返回值的說明,如果方法的返回值類型是void就不能寫
@exception 對方法可能拋出的異常進行說明 ,如果方法沒有用throws顯式拋出的異常就不能寫
其中
@param @return 和 @exception 這三個標記都是只用于方法的
@param的格式要求:@param 形參名 形參類型 形參說明
@return 的格式要求:@return 返回值類型 返回值說明
@exception 的格式要求:@exception 異常類型 異常說明
@param和@exception可以并列多個
示例二:在編譯時進行格式檢查(JDK內(nèi)置的三個基本注解)
①@Override: 重寫父類中的方法,該注解只能用于方法
②@Deprecated: 用于表示所修飾的元素(類、方法等)已過時
③@SuppressWarnings: 抑制編譯器警告
示例三:跟蹤代碼依賴性,實現(xiàn)替代配置文件功能
Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中進行Servlet的部署。spring框架中關(guān)于“事務(wù)”的管理等。
IDEA注釋注解快捷鍵及模板
關(guān)于IDEA中注釋和注解快捷鍵及模板可以參見:《 IDEA注釋注解快捷鍵及模板》
自定義 Annotation
定義新的 Annotation 類型使用 @interface 關(guān)鍵字。自定義注解自動繼承了java.lang.annotation.Annotation接口
Annotation 的成員變量在 Annotation 定義中以無參數(shù)方法的形式來聲明。其方法名和返回值定義了該成員的名字和類型,稱為配置參數(shù)。類型只能是八種基本數(shù)據(jù)類型、String類型、Class類型、enum類型、Annotation類型及以上所有類型的數(shù)組。
可以在定義 Annotation 的成員變量時為其指定初始值, 指定成員變量的初始值可使用 default 關(guān)鍵字。
如果只有一個參數(shù)成員,建議使用參數(shù)名為value。
如果定義的注解含有配置參數(shù),則使用時必須指定參數(shù)值,除非它有默認值。格式是“參數(shù)名 = 參數(shù)值”,若只有一個參數(shù)成員,且名稱為value,可以省略“value=”。
沒有成員定義的 Annotation 稱為標記; 包含成員變量的 Annotation 稱為元數(shù)據(jù) Annotation。
自定義注解必須配上注解的信息處理流程才有意義,以下示例無意義,只是作為自定義的說明。
@interface MyAnnotation {String value() default "默認初始值"; }@MyAnnotation(value = "賦值") public class AnnotationTest {public static void main(String[] args) {} }JDK 中的元注解
元注解:對注解進行解釋說明的注解,修飾其他 Annotation 定義。
JDK5.0提供了4個標準的meta-annotation類型,分別是:
①@Retention
②@Target
③@Documented
④@Inherited
1.@Retention: 只能用于修飾 Annotation 定義, 用于指定該 Annotation 的生命周期,@Rentention 包含一個 RetentionPolicy 類型的成員變量,使用@Rentention 時必須為該 value 成員變量指定值:
RetentionPolicy.SOURCE:只在源文件中有效(即源文件保留),編譯器則丟棄這種策略的注解;
RetentionPolicy.CLASS:在class文件中有效(即class保留) , 當運行 Java 程序時, JVM 不會保留注解,這是默認值;
RetentionPolicy.RUNTIME:在運行時有效(即運行時保留),當運行 Java 程序時, JVM 會保留該注解,程序可以通過反射獲取該注釋。
2.@Target: 用于修飾 Annotation 定義,用于指定被修飾的 Annotation 能用于修飾哪些程序元素。 @Target 也包含一個名為 value 的成員變量。
若不使用,則默認自定義的Annotation可以用于所以程序元素。
3.@Documented: 用于指定被該元 Annotation 修飾的 Annotation 類將被javadoc工具提取成文檔,默認情況下,javadoc是不包括注解的。
定義為Documented的注解必須設(shè)置Retention值為RUNTIME。
4.@Inherited: 被它修飾的 Annotation 將具有繼承性。如果某個類使用了被@Inherited 修飾的 Annotation,則其子類將自動具有該注解。
5.@Repeatable:可重復(fù)注解,成員值為MyAnnotations. class。MyAnnotation的Target等其他元注解和Retention MyAnnotations都要相同。
6.JDK1.8之后,關(guān)于元注解@Target的參數(shù)類型ElementType枚舉值多了兩個:
TYPE_PARAMETER,TYPE_USE。在Java 8之前,注解只能是在聲明的地方所使用,Java8開始,注解可以應(yīng)用在任何地方。
ElementType.TYPE_PARAMETER 表示該注解能寫在類型變量的聲明語句中(如:泛型聲明)
ElementType.TYPE_USE 表示該注解能寫在使用類型的任何語句中
總結(jié)
以上是生活随笔為你收集整理的让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑主板b85m启动针脚(b85m主板多
- 下一篇: 天赋论的观点(关于天赋的论点)