最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕松掌握Java注解,讓編程更智能、更優(yōu)雅

 更新時間:2024年01月03日 08:31:27   作者:Java備忘錄  
輕松掌握Java注解?沒問題!想要讓你的Java代碼更具可讀性、維護性,同時提升開發(fā)效率?本指南將帶你快速入門Java注解的世界,只需短短幾分鐘,你就能揭秘這個強大的編程工具,讓編寫有聲明性邏輯的代碼變得輕而易舉,趕快一起來探索吧!

一、什么是注解

定義:注解(Annotation),也叫元數據。一種代碼級別的說明。

它是JDK1.5及以后版本引入的一個特性,與類、接口、枚舉是在同一個層次。

它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,注釋。

二、內置注解

  • @Override: 標記在成員方法上,用于標識當前方法是重寫父類(父接口)方法,編譯器在對該方法進行編譯時會檢查是否符合重寫規(guī)則,如果不符合,編譯報錯。
  • @Deprecated: 用于標記當前類、成員變量、成員方法或者構造方法過時如果開發(fā)者調用了被標記為過時的方法,編譯器在編譯期進行警告。
  • @SuppressWarnings: 壓制警告注解,可放置在類和方法上,該注解的作用是阻止編譯器發(fā)出某些警告信息。

三、元注解

元注解即注解的注解。

在jdk的中java.lang.annotation包中定義了四個元注解。

@Target

指定被修飾的注解的作用范圍,如果不寫默認是任何地方都可以使用。

可選的參數值在枚舉類ElemenetType中包括:

TYPE: 用在類,接口上
FIELD:用在成員變量上
METHOD: 用在方法上
PARAMETER:用在參數上
CONSTRUCTOR:用在構造方法上
LOCAL_VARIABLE:用在局部變量上

@Retention

指定了被修飾的注解的生命周期。

可選的參數值在枚舉類型RetentionPolicy中包括:

SOURCE:注解只存在于Java源代碼中,編譯生成的字節(jié)碼文件中就不存在了。
CLASS:注解存在于Java源代碼、編譯以后的字節(jié)碼文件中,運行的時候內存中沒有,默認值。
RUNTIME:注解存在于Java源代碼中、編譯以后的字節(jié)碼文件中、運行時內存中,程序可以通過反射獲取該注解。

正常開發(fā)中我們自定義注解的時候無腦用 Runtime 就可以了。

@Documented

指定了被修飾的注解是可以Javadoc等工具文檔化。

@Inherited

指定了被修飾的注解修飾程序元素的時候是可以被子類繼承的。

四、自定義注解

定義格式

元注解
public @interface 注解名稱{
	屬性列表;
}

注解的屬性

  • 格式1:數據類型 屬性名();
  • 格式2:數據類型 屬性名() default 默認值;

示例如下:

public @interface Student {
  String name(); 
  int age() default 18; 
  String gender() default "男"; 
} 

注意:沒有默認值的屬性是必填的,當屬性只有一個,且屬性名為 value 時,可以省略。

示例:

public class Test {
    @Student("zhangsan")
    public void test(){

    }
}
public @interface Student {
  String value(); 
} 

反射解析注解

反射請移步:Java反射,看完就會用

如果反射懂了,注解懂了,那就不需要過多解釋直接看示例就行了。

自定義注解 Book

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Book {
    // 書名
    String value();
    // 價格
    double price() default 100;
    // 作者
    String[] authors();
}

BookStore類

@Book(value = "紅樓夢",authors = "曹雪芹",price = 998)
public class BookStore {
}

TestAnnotation類

public class TestAnnotation {
    public static void main(String[] args)  throws Exception{
        System.out.println("---------獲取類上注解的數據----------");
        test();
    }

    /**
     * 獲取BookStore類上使用的Book注解數據
     */
    public static void test(){
        // 獲得BookStore類對應的Class對象
        Class c = BookStore.class;
        // 判斷BookStore類是否使用了Book注解
        if(c.isAnnotationPresent(Book.class)) {
            // 根據注解Class對象獲取注解對象
            Book book = (Book) c.getAnnotation(Book.class);
            // 輸出book注解屬性值
            System.out.println("書名:" + book.value());
            System.out.println("價格:" + book.price());
            System.out.println("作者:" + Arrays.toString(book.authors()));
        }
    }
}

到此這篇關于輕松掌握Java注解,讓編程更智能、更優(yōu)雅的文章就介紹到這了,更多相關Java注解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java11中的新增字符串APIs使用實例探究

    Java11中的新增字符串APIs使用實例探究

    這篇文章主要為大家介紹了Java11中的新增字符串APIs使用實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • springboot集成elasticsearch7的圖文方法

    springboot集成elasticsearch7的圖文方法

    本文記錄springboot集成elasticsearch7的方法,本文通過圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友參考下吧
    2021-05-05
  • 解決@RequestBody部分屬性丟失的問題

    解決@RequestBody部分屬性丟失的問題

    這篇文章主要介紹了解決@RequestBody部分屬性丟失的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • jar命令的用法詳解

    jar命令的用法詳解

    這篇文章主要介紹了jar命令的用法,非常實用,需要的朋友可以參考下
    2014-08-08
  • Java:String.split()特殊字符處理操作

    Java:String.split()特殊字符處理操作

    這篇文章主要介紹了Java:String.split()特殊字符處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Spring實戰(zhàn)之使用TransactionProxyFactoryBean實現(xiàn)聲明式事務操作示例

    Spring實戰(zhàn)之使用TransactionProxyFactoryBean實現(xiàn)聲明式事務操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之使用TransactionProxyFactoryBean實現(xiàn)聲明式事務操作,結合實例形式分析了spring使用TransactionProxyFactoryBean實現(xiàn)聲明式事務相關配置、接口設置與使用技巧,需要的朋友可以參考下
    2020-01-01
  • 實例解析Java程序中正則表達式的貪婪模式匹配

    實例解析Java程序中正則表達式的貪婪模式匹配

    貪婪模式又叫最大匹配,X?、X*、X+、X{n,}都是最大匹配,例如你要用“<.+>”去匹配“a<tr>aava </tr>abb”,也許你所期待的結果是想匹配“<tr>”,但是實際結果卻會匹配到“<tr>aava </tr>”,下面我們就來看具體看一下貪婪模式的使用.
    2016-05-05
  • SpringBoot整合PageHelper實現(xiàn)分頁查詢功能

    SpringBoot整合PageHelper實現(xiàn)分頁查詢功能

    本文介紹了在SpringBoot+MyBatis項目中使用PageHelper實現(xiàn)分頁功能的方法,包括PageHelper的簡要介紹,環(huán)境搭建,核心使用方式,實戰(zhàn)案例,以及PageHelper的工作原理,通過PageHelper,可以實現(xiàn)近乎零侵入的分頁功能,使分頁邏輯與業(yè)務代碼解耦,需要的朋友可以參考下
    2026-04-04
  • Java實現(xiàn)瀏覽器大文件上傳的示例詳解

    Java實現(xiàn)瀏覽器大文件上傳的示例詳解

    文件上傳是許多項目都有的功能,用戶上傳小文件速度一般都很快,但如果是大文件幾個g,幾十個g的時候,上傳了半天,馬上就要完成的時候,網絡波動一下,文件又要重新上傳,所以本文給大家介紹了Java實現(xiàn)瀏覽器大文件上傳的示例,需要的朋友可以參考下
    2024-07-07
  • Nacos框架服務注冊實現(xiàn)流程

    Nacos框架服務注冊實現(xiàn)流程

    這篇文章主要介紹了SpringCloud服務注冊之nacos實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

偏关县| 全州县| 吉水县| 璧山县| 十堰市| 壶关县| 石棉县| 四平市| 周至县| 章丘市| 沧州市| 登封市| 金昌市| 济南市| 大关县| 涿鹿县| 南阳市| 喀什市| 宜昌市| 壤塘县| 东阳市| 贵阳市| 石景山区| 温州市| 遵义市| 北川| 苏尼特左旗| 巴彦淖尔市| 阳朔县| 萨迦县| 辛集市| 乌审旗| 余干县| 兰州市| 延川县| 广河县| 连南| 宁德市| 微山县| 小金县| 黎平县|