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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring框架注解多?注解到底是个什么东西?这篇文章给你讲明白

發布時間:2025/3/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring框架注解多?注解到底是个什么东西?这篇文章给你讲明白 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

什么是注解

內置注解:

元注解:

自定義注解:


什么是注解

1.Annotation是從JDK5.0開始引入的新技術。 Annotation的作用: 2.不是程序本身,可以對程序作出解釋。(這一點和注釋(comment)沒什么區別) 3.可以被其他程序(比如編譯器等)讀取。 Annotation的格式: 4.注解是以“@注釋名”在代碼中存在的,還可以 添加一些參數值,例如@SuppressWarnings(value="unchecked"). Annotation在哪里使用: 5.可以附加在package、class、method、field等上面,相當于給他們添加了額外的輔助信息,我們可以通過反射機制編程實現對這些元數據的訪問。

內置注解:

?? ?@Override:定義在java.lang.Override中,此注釋只適用于修辭方法,表示一個方法聲明打算重寫超類中的另一個方法聲明。

?? ?@Deprecated:定義在java.lang.Deprecated中,此注釋可以用于修辭方法,屬性,類,表示不鼓勵程序員使用這樣的元素,通常是因為它很危險或者存在更好的選擇。

?? ?@SuppressWarnings:定義在java.lang.SuppressWarnings中,用來抑制編譯時的警告信息,與前兩個注釋有所不同,你需要添加一個參數才能正確使用,這些參數都是已經定義好的:@SuppressWarnings("all")、@SuppressWarnings("unchecked")、@SuppressWarnings(value={"unchecked","deprecation"})等等。

//內置注解 public class Test01 {@Override//方法重寫的注解public String toString() {return super.toString();}@Deprecated//該注解注釋的方法不推薦程序員使用,但是可以用,或者存在其他更好的方式public static void test01(){System.out.println("這是測試");}@SuppressWarnings("all")//該注解注釋的方法、類中不會出現警告public void test02(){String a = "測試a";}public static void main(String[] args) {test01();//被@Deprecated注解的方法調用時會有刪除線,但是依然可以用。} }

元注解:

元注解的作用就是負責注解其他注解,Java定義了4個標準的meta-annotation類型,他們被用來提供對其他annotation類型作說明。 這些類型和它們所支持的類在java.lang.annotation包中可以找到(@Target、@Retention、@Documented、@Inherited) @Target:用于描述注解的使用范圍(即:被描述的注解可以用在什么地方(類、方法、構造器等等)) @Target:注解的作用目標 @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) ///包

? ? @Retention:表示需要在什么級別保存該注釋信息,用于描述注解的生命周期(SOURCE<CLASS<RUNTIME)

@Retention:注解的保留位置          @Retention(RetentionPolicy.SOURCE) //注解僅存在于源碼中,在class字節碼文件中不包含 @Retention(RetentionPolicy.CLASS) // 默認的保留策略,注解會在class字節碼文件中存在,但運行時無法獲得, @Retention(RetentionPolicy.RUNTIME) // 注解會在class字節碼文件中存在,在運行時可以通過反射獲取到

? ? @Document:說明該注解將被包含在javadoc中。

? ? @Inherited:說明子類可以繼承父類中的該注解。

import java.lang.annotation.*;//測試元注解 public class Test02 {@MyAnnotationpublic void test01(){} }//定義一個注解 //@Target表示注解可以用在什么地方,ElementType.METHOD表示可用在方法上,可以傳遞一個數組 @Target(value = {ElementType.METHOD, ElementType.TYPE}) //@Retention表示注解在什么地方才有效,一般都寫RetentionPolicy.RUNTIME,運行時都有效;RUNTIME>CLASS>SOURCE @Retention(value = RetentionPolicy.RUNTIME) //@Documented 表示是否將我們的注解生成在javaDOC中。 @Documented //@Inherited子類可以繼承父類的注解 @Inherited @interface MyAnnotation{ }

自定義注解:

? ? 使用@interface自定義注解時,自動繼承了java.lang.annotation.Annotation接口。

?

分析:

? ? @interface用來聲明一個注解,格式:public @interface 注解明{定義內容}

? ? 其中的每一個方法實際上是聲明了一個配置參數。

? ? 方法的名稱就是參數的名稱。

? ? 返回值類型就是參數的類型(返回值只能是基本類型,Class,String。enum)。

? ? 可以通過default來聲明參數的默認值。

? ? 如果只有一個參數成員,一般參數名為value。

? ? 注解元素必須要有值,我們定義注解元素時,經常使用空字符串、0作為默認值。

import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;//自定義注解 public class Test03 {//@MyAnno2(name = "奇怪的大冒險o") 注解可以顯式賦值,如果沒有默認值,必須給注解賦值@MyAnno2(name = "奇怪的大冒險o", schools = {"清華", "北大"})public void test1(){}@MyAnno3("測試")//如果參數為value的時候,可以省略valuepublic void test2(){} }@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnno2{//注解的參數,參數類型 參數名();String name() default "";int age() default 0;int id() default -1;//如果默認值為-1,代表不存在,就像indexof如果找不到就返回-1。String[] schools(); }@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnno3{//只有一個參數,建議用value命名String value() default ""; }

?

總結

以上是生活随笔為你收集整理的spring框架注解多?注解到底是个什么东西?这篇文章给你讲明白的全部內容,希望文章能夠幫你解決所遇到的問題。

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