深入理解 Java 註解 [元註解(一)]
一、首先,我們來說一下註解是什麼呢?它到底有什麼作用呢?
JAVA 註解,有很多人把他理解為註釋,解釋。但功能不僅僅是解釋那麼簡單。註解(Annotation)為我們在程式碼中新增資訊提供了一種形式化的方法,是我們可以在稍後 某個時刻方便地使用這些資料(通過 解析註解來使用這些資料)。而且,註解的寫法和註釋的寫法是完全不一樣的,註解是@...,而註釋一般是/*...*/這樣的。例如我們現在經常用的SSM框架,我們在做CRUD操作的時候,我們會在控制層給一個@Controller註解,在業務層給一個@Service註解,在持久層給一個@Repository註解,那麼有了這些個註解,我們就很清楚的知道它就是控制層、業務層、持久層。這就是對註解最基本的理解。
註解的作用:
1、生成文件。這是最常見的,也是Java 最早提供的註解。常用的有@see @param @return 等
2、跟蹤程式碼依賴性,實現替代配置檔案功能。比較常見的是spring 2.5 開始的基於註解配置。作用就是減少配置。現在的框架基本都使用了這種配置來減少配置檔案的數量。以後java的程式開發,最多的也將實現註解配置,具有很大用處;
3、在編譯時進行格式檢查。如@override 放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出。
二、JAVA 元註解說到註解,那不得不說的就是元註解了,說到元註解,可能有很多人都對此比較陌生,我們每個程式設計師肯定都知道註解,也用過註解,但是應該很少有人去了解註解。
要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java為我們提供的元註解和相關定義註解的語法。
元註解的作用就是負責註解其他註解。
Java定義的元註解有四個:
1.@Target
2.@Retention
3.@Documented
4.@Inherited這些型別和它們所支援的類在java.lang.annotation包中可以找到。下面我們看一下每個元註解的作用和相應引數的使用說明。(在這我就只說下前兩個我們一般比較常用的)
1.@Target
@Target說明了Annotation所修飾的物件範圍:Annotation可被用於 packages、types(類、介面、列舉、Annotation型別)、型別成員(方法、構造方法、成員變數、枚舉值)、方法引數和本地變數(如迴圈變數、catch引數)。在Annotation型別的宣告中使用了target可更加明晰其修飾的目標。
作用:用於描述註解的使用範圍(即:被描述的註解可以用在什麼地方)
元註解的取值是用ElementType取的,即ElementType.值
那麼,ElementType取值有:
1.CONSTRUCTOR:用於描述構造器
2.FIELD:用於描述屬性
3.LOCAL_VARIABLE:用於描述區域性變數
4.METHOD:用於描述方法
5.PACKAGE:用於描述包
6.PARAMETER:用於描述引數
7.TYPE:用於描述類、介面(包括註解型別)
下面我主要說下FIELD、METHOD、TYPE這三個經常用到的
使用例項:
我們首先來建立一個註解Fruit,顧名思義也就是說水果的意思
然後在來建立一個蘋果類Apple,並且把Fruit這個註解分別給Apple裡的類、屬性、方法上邊
那我們很明顯可以看到屬性和方法報錯了,那也就是說我們上邊@Target給的值ElementType.TYPE是來描述類的,不能描述屬性以及方法等。如果只給了ElementType.TYPE這一個值那麼就說明Fruit這個註解只能用到類上邊。那如果屬性和方法也想要用這個註解,或者說類、屬性、方法都想用Fruit這個註解應該怎麼辦呢?下面例項說明一下:
可以看到又在@Target裡邊加了兩個值(ElementType.FIELD、ElementType.METHOD),而且多了一個大括號。
我們如果想要將註解用到兩個或兩個以上的時候,就應該把值用大括號給括起來。那我們再看一下Apple類:
很明顯,不報錯了,那麼我們也很容易發現ElementType.TYPE、ElementType.FIELD、ElementType.METHOD它們的作用,TYPE是描述類的,FIELD是描述屬性的,METHOD是描述方法的。
說到這,我相信朋友們對@Target也瞭解的差不多了,那麼@Target我就說到這裡。
之後我會持續更出@Retention的相關東西。。。。。
相關文章
- 深入理解 Java 註解Java
- 註解專題(一)Java元註解,內建註解Java
- Java元註解介紹Java
- JAVA 元註解 @Target @Retention @Documented @InheritedJava
- JAVA-註解(2)-自定義註解及反射註解Java反射
- java註解Java
- 註解 javaJava
- Java面試題(19)Java元註解之@RetentionJava面試題
- JAVA元註解@interface詳解(@Target,@Documented,@Retention,@Inherited)Java
- 對於 @Autowired註解和@service註解的理解
- Java中的註解-自定義註解Java
- 元註解——java.lang.annotation.Target(1.8)Java
- Java註解詳解Java
- Java 註解詳解Java
- Java註解詳解「註解專案實戰」Java
- Java註解-後設資料、註解分類、內建註解和自定義註解Java
- 基礎篇:深入解析JAVA註解機制Java
- JAVA 註解 AnnontationJava
- Java註解AnnotatonJava
- Java反射-註解Java反射
- Java™ 教程(註解)Java
- Java —— 註解(Annotation)Java
- Java(5)註解Java
- java註解,反射Java反射
- Java Annotation 註解Java
- Java--註解Java
- Java 註解(Annotation)Java
- Java進階(一)Annotation(註解)Java
- Java註解(Annotation)詳解Java
- 關於Java註解(annotation)的簡單理解Java
- Java註解解析-搭建自己的註解處理器(CLASS註解使用篇)Java
- Java ”框架 = 註解 + 反射 + 設計模式“ 之 註解詳解Java框架反射設計模式
- Spring註解篇,學完註解深入瞭解SpringBoot更容易Spring Boot
- Java中的註解-自定義註解處理器Java
- Java 8 註解探秘Java
- Java 註解完全解析Java
- 自定義JAVA註解Java
- Java 註解全面解析Java