日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

發布時間:2023/12/2 java 35 豆豆

文章目錄

    • 單行和多行注釋
    • 文檔注釋(Java特有)
    • Annotation(注解)的理解
    • 常見的Annotation示例
    • IDEA注釋注解快捷鍵及模板
    • 自定義 Annotation
    • JDK 中的元注解


單行和多行注釋

注釋的內容不參與編譯,即編譯以后的.class的字節碼文件中不包含注釋的內容。

作用:
①對程序進行解釋說明,增強可讀性。
②調試所寫的代碼。(將某代碼注釋來debug)

格式:
單行注釋:以//開頭
多行注釋:注釋內容用/*和*/一對包住

class HelloJava{/*多行注釋:如下的main方法是程序的入口!main的格式是固定的!*/public static void main(String[] args){//單行注釋:如下的語句表示輸出到控制臺。System.out.println("Hello Java !!!");} }

文檔注釋(Java特有)

注釋內容可以被JDK提供的工具javadoc解析,生成以網頁文件形式展現的該程序的說明文檔。

/** 文檔注釋: @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 增加了對元數據(MetaData) 的支持,也就是Annotation(注解)。

Annotation 其實就是代碼里的特殊標記,這些標記可以在編譯,類加載,運行時被讀取,并執行相應的處理。通過使用 Annotation,程序員可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。代碼分析工具、開發工具和部署工具可以通過這些補充信息進行驗證或者進行部署。

Annotation 可以像修飾符一樣被使用,可用于修飾包、類、構造器、方法、成員變量、參數、局部變量的聲明,這些信息被保存在 Annotation 的 “name=value” 對中。

在JavaSE中,注解的使用目的比較簡單,例如標記過時的功能,忽略警告等。在JavaEE/Android中注解占據了更重要的角色,例如用來配置應用程序的任何切面,代替JavaEE舊版中所遺留的繁冗代碼和XML配置等。

未來的開發模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,現在的Struts2有一部分也是基于注解,注解是一種趨勢,一定程度上可以說:框架 = 注解 + 反射 + 設計模式。


常見的Annotation示例

示例一:生成文檔相關的注解
@author 開發該類模塊的作者,多個作者之間使用","分隔開
@version 該類模塊的版本
@see 參考轉向,也就是相關主題
@since 從哪個版本開始增加的
@param 對方法中某參數的說明,如果沒有參數就不能寫
@return 對方法返回值的說明,如果方法的返回值類型是void就不能寫
@exception 對方法可能拋出的異常進行說明 ,如果方法沒有用throws顯式拋出的異常就不能寫
其中
@param @return 和 @exception 這三個標記都是只用于方法的
@param的格式要求:@param 形參名 形參類型 形參說明
@return 的格式要求:@return 返回值類型 返回值說明
@exception 的格式要求:@exception 異常類型 異常說明
@param和@exception可以并列多個

/*** @Author: Yeman* @Date: 2021-09-10-11:13* @Description:*/ public class AnnotationTest {/*** 程序的主入口* @param args*/public static void main(String[] args) {System.out.println(getArea(3));}/*** 求圓的面積方法* @param radius double 圓的半徑* @return double 圓的面積*/public static double getArea(double radius){return Math.PI * radius * radius;} }

示例二:在編譯時進行格式檢查(JDK內置的三個基本注解)
①@Override: 重寫父類中的方法,該注解只能用于方法
②@Deprecated: 用于表示所修飾的元素(類、方法等)已過時
③@SuppressWarnings: 抑制編譯器警告

public class AnnotationTest{public static void main(String[] args) {@SuppressWarnings("unused")int a = 10;}@Deprecatedpublic void print(){System.out.println("過時的方法");}@Overridepublic String toString() {return "重寫的toString方法()";} }

示例三:跟蹤代碼依賴性,實現替代配置文件功能
Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中進行Servlet的部署。spring框架中關于“事務”的管理等。


IDEA注釋注解快捷鍵及模板

關于IDEA中注釋和注解快捷鍵及模板可以參見:《 IDEA注釋注解快捷鍵及模板》


自定義 Annotation

定義新的 Annotation 類型使用 @interface 關鍵字。自定義注解自動繼承了java.lang.annotation.Annotation接口

Annotation 的成員變量在 Annotation 定義中以無參數方法的形式來聲明。其方法名和返回值定義了該成員的名字和類型,稱為配置參數。類型只能是八種基本數據類型、String類型、Class類型、enum類型、Annotation類型及以上所有類型的數組。

可以在定義 Annotation 的成員變量時為其指定初始值, 指定成員變量的初始值可使用 default 關鍵字。

如果只有一個參數成員,建議使用參數名為value。
如果定義的注解含有配置參數,則使用時必須指定參數值,除非它有默認值。格式是“參數名 = 參數值”,若只有一個參數成員,且名稱為value,可以省略“value=”。
沒有成員定義的 Annotation 稱為標記; 包含成員變量的 Annotation 稱為元數據 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 會保留該注解,程序可以通過反射獲取該注釋。

@Retention(RetentionPolicy.SOURCE) @interface MyAnnotation1{ }

2.@Target: 用于修飾 Annotation 定義,用于指定被修飾的 Annotation 能用于修飾哪些程序元素。 @Target 也包含一個名為 value 的成員變量。

@Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.TYPE})

若不使用,則默認自定義的Annotation可以用于所以程序元素。

3.@Documented: 用于指定被該元 Annotation 修飾的 Annotation 類將被javadoc工具提取成文檔,默認情況下,javadoc是不包括注解的。
定義為Documented的注解必須設置Retention值為RUNTIME。

4.@Inherited: 被它修飾的 Annotation 將具有繼承性。如果某個類使用了被@Inherited 修飾的 Annotation,則其子類將自動具有該注解。

5.@Repeatable:可重復注解,成員值為MyAnnotations. class。MyAnnotation的Target等其他元注解和Retention MyAnnotations都要相同。

6.JDK1.8之后,關于元注解@Target的參數類型ElementType枚舉值多了兩個:
TYPE_PARAMETER,TYPE_USE。在Java 8之前,注解只能是在聲明的地方所使用,Java8開始,注解可以應用在任何地方。
ElementType.TYPE_PARAMETER 表示該注解能寫在類型變量的聲明語句中(如:泛型聲明)
ElementType.TYPE_USE 表示該注解能寫在使用類型的任何語句中

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久婷婷一区 | 91蝌蚪少妇 | 少妇人妻一级a毛片 | 亚洲福利视频一区 | 天天狠狠 | 五月天婷婷影院 | 在线www色| 国产精品久久久久久久免费 | 91精品国产一区二区 | 土耳其xxxx性hd极品 | 怡红院av久久久久久久 | 国产swag在线 | 久久久久99精品国产片 | a级片久久 | 福利资源在线 | 69成人网| 国产精品国产精品 | 青青草91 | 久久av资源站 | 国产丰满农村老妇女乱 | 亚洲视屏 | 中国少妇做爰全过程毛片 | 成人在线免费观看视频 | 涩涩视频网站在线观看 | 人人人干 | 很黄很污的视频 | 国产aⅴ片 | 日本va在线 | 日韩久久一区 | 午夜时刻免费入口 | 中文精品久久久久人妻不卡 | 99re视频 | 高跟91白丝 | 高跟av| 久久国产黄色片 | 免费观看av网址 | 日本猛少妇色xxxxx猛叫 | 最新版天堂资源在线 | 久久亚洲一区二区三区四区 | 国产成人中文字幕 | 一本一本久久a久久精品综合麻豆 | 美女诱惑一区 | 亚洲一区久久久 | 天天干天天搞天天射 | 午夜不卡视频 | 日本黄色美女视频 | 超碰在| 亚洲小视频 | 亚洲男人在线天堂 | 人妻体内射精一区二区 | 波多野结衣一二三四区 | 自拍偷拍福利视频 | 日韩精品人妻一区二区中文字幕 | www.色在线观看 | 天堂在线免费视频 | 久操视频在线播放 | 在线视频黄 | 97av.com| 欧美一区二区三区粗大 | 国产群p视频 | 国产真实伦对白全集 | 日本一本在线 | 鲍鱼av在线| 久久成人人人人精品欧 | 一区二区国产在线观看 | 国产成人午夜精品无码区久久 | 亚洲射吧 | 成人超碰在线 | 蜜臀av一区二区三区有限公司 | 国产午夜在线 | 91男女视频 | 欧美精品激情视频 | 国产精品无码一区二区桃花视频 | 国产免费黄色网址 | 免费黄色的网站 | 欧美日韩视频在线观看免费 | www中文在线 | 欧美亚洲一区二区在线观看 | 亚洲六月丁香色婷婷综合久久 | 日韩av看片 | 欧美14sex性hd摘花 | 欧美午夜激情视频 | 蜜臀av在线观看 | 日本欧美一区二区 | 国产又粗又长又大 | 亚洲av成人精品日韩在线播放 | 国产熟妇乱xxxxx大屁股网 | 国产探花一区二区三区 | 天天操网址 | 日日夜夜综合 | 午夜久久久久久久久久影院 | 黄色网页免费在线观看 | 青娱乐国产视频 | 国产午夜性春猛交ⅹxxx | 噜噜色综合| free性护士vidos猛交 | 亚洲精品免费观看 | 韩国伦理片在线观看 | 天堂影院一区二区 |