注解的用途
在實際的java開發(fā)中我們會使用各種各樣的注解,每個注解都有不用的作用,也有不同的作用范圍,比如長見的@Override注解,在重寫父類方法的時候會出現(xiàn),最常見的地方就是接口的實現(xiàn)類中,再有就是在方法入?yún)⒌臅r候經(jīng)常需要用到的lombok的@NonNull注解,有了這個注解就可以控制入?yún)?shù)不為null,不需要自己手動實現(xiàn)校驗邏輯。大多數(shù)的注解并沒有實現(xiàn)注解名稱對應的功能,僅僅是起到標記的作用,真正起作用的或者實現(xiàn)這些功能的代碼邏輯在其他的class文件中,關(guān)于如何通過注解實現(xiàn)某些功能下個章節(jié)在將,這個章節(jié)只講如何創(chuàng)建自定義注解
先來看下lombok中@NonNull注解

這是一個標記注解,結(jié)構(gòu)非常的簡單,只是在interface前面加上了@符號,上面多了幾個其他的注解而已
@Target注解以及其中參數(shù)作用:表明這個注解能用在哪些地方,target里面可以放多個值每個值對應如下
1.ElementType.CONSTRUCTOR:用于構(gòu)造器
2.ElementType.FIELD:用于屬性
3.ElementType.LOCAL_VARIABLE:用于局部變量
4.ElementType.METHOD:用于方法
5.ElementType.PACKAGE:用于包
6.ElementType.PARAMETER:用于參數(shù)
7.ElementType.TYPE:用于類、接口(包括注解類型) 或enum聲明
注解類上的其余注解的作用
@Documented – 注解是否將包含在JavaDoc中
@Retention – 什么時候使用該注解
@Inherited – 是否允許子類繼承該注解
一般來說,自定義注解的使用范圍不要寫的太寬,按照自己的使用場景在target中的選擇合適的范圍就行
以下是我在項目中使用的兩個標記注解

