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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

1.8 自定义注解

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.8 自定义注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面我們學習了 Java 的基本注解和元注解,如果這兩種注解不能滿足你的需求,可以自定義注解。下面介紹如何自定義注解。

聲明自定義注解使用 @interface 關鍵字(interface 關鍵字前加 @ 符號)實現。定義注解與定義接口非常像,如下代碼可定義一個簡單形式的注解類型。

// 定義一個簡單的注解類型 public @interface Test { }

上述代碼聲明了一個 Test 注解。默認情況下,注解可以在程序的任何地方使用,通常用于修飾類、接口、方法和變量等。

定義注解和定義類相似,注解前面的訪問修飾符和類一樣有兩種,分別是公有訪問權限(public)和默認訪問權限(默認不寫)。一個源程序文件中可以聲明多個注解,但只能有一個是公有訪問權限的注解。且源程序文件命名和公有訪問權限的注解名一致。

不包含任何成員變量的注解稱為標記注解,例如上面聲明的 Test 注解以及基本注解中的 @Override 注解都屬于標記注解。根據需要,注解中可以定義成員變量,成員變量以無形參的方法形式來聲明,其方法名和返回值定義了該成員變量的名字和類型。代碼如下所示:

public @interface MyTag {// 定義帶兩個成員變量的注解// 注解中的成員變量以方法的形式來定義String name();int age(); }

以上代碼中聲明了一個 MyTag 注解,定義了兩個成員變量,分別是 name 和 age。成員變量也可以有訪問權限修飾符,但是只能有公有權限和默認權限。

如果在注解里定義了成員變量,那么使用該注解時就應該為它的成員變量指定值,如下代碼所示。

public class Test {// 使用帶成員變量的注解時,需要為成員變量賦值@MyTag(name="xx", age=6)public void info() {...}... }

注解中的成員變量也可以有默認值,可使用 default 關鍵字。如下代碼定義了 @MyTag 注解,該注解里包含了 name 和 age 兩個成員變量。

public @interface MyTag {// 定義了兩個成員變量的注解// 使用default為兩個成員變量指定初始值String name() default "C語言中文網";int age() default 7; }

如果為注解的成員變量指定了默認值,那么使用該注解時就可以不為這些成員變量賦值,而是直接使用默認值。

public class Test {// 使用帶成員變量的注解// MyTag注釋的成員變量有默認值,所以可以不為它的成員變量賦值@MyTagpublic void info() {...}... }

當然也可以在使用 MyTag 注解時為成員變量指定值,如果為 MyTag 的成員變量指定了值,則默認值不會起作用。

根據注解是否包含成員變量,可以分為如下兩類。

  • 標記注解:沒有定義成員變量的注解類型被稱為標記注解。這種注解僅利用自身的存在與否來提供信息,如前面介紹的 @Override、@Test等都是標記注解。
  • 元數據注解:包含成員變量的注解,因為它們可以接受更多的元數據,所以也被稱為元數據注解。
  • 總結

    以上是生活随笔為你收集整理的1.8 自定义注解的全部內容,希望文章能夠幫你解決所遇到的問題。

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