真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Annotation注解怎么定義

今天小編給大家分享一下Annotation注解怎么定義的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供謝家集企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為謝家集眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

 一、 Annotation 概述;

  Annotatio從jdk1.5開始產(chǎn)生;他是代碼里面的特殊標(biāo)記,可以在編譯、類加載、運(yùn)行時(shí)被讀取,并執(zhí)行相應(yīng)的處理。
  可以修飾包、類、構(gòu)造器、 成員變量、參數(shù)、局部變量的聲明;
  框架 = 注解+反射+設(shè)計(jì)模式 

二、注解示例

1. 文檔注解: 

  • @auth        標(biāo)明該模塊的作者,多個(gè)作者用,分割

  • @version     表明該類模塊的版本

  • @see            參考轉(zhuǎn)向,也就是相關(guān)主題;

  • @since        從哪個(gè)版本開始增加的;

  • @param        對(duì)方法中某些參數(shù)的說(shuō)明,如果沒(méi)有參數(shù)就不能寫

  • @return        對(duì)返回值的說(shuō)明,如果方法的返回值類型就void就不能寫

  • @exception    對(duì)方法可能拋出的一場(chǎng)進(jìn)行說(shuō)明,如果方法沒(méi)有又throws 顯示拋出異常,就不能寫其中

例如:

Annotation注解怎么定義

Annotation注解怎么定義

1 /**
 2  * 
 3  * @author joy
 4  * @Description:
 5  * @date: 2021年3月25日 上午10:06:39
 6  */
 7 public class Day22Annotation10 {
 8     public static void main(String[] args) {
 9         @SuppressWarnings("unused")
10         int a = 0;
11     }
12

View Code

補(bǔ)充:eclipse配置:

1 windows-->preference 
2   Java-->Code Style-->Code Templates 
3
在右側(cè)選擇Comments,將其中的Type項(xiàng),然后選右邊的"Edit",進(jìn)入編輯模式: 
/**
 * @author ${user}
 * @Description:
 * @date:   ${date} ${time}       
 * ${tags}
 */
最后 apply and close;

Annotation注解怎么定義

2.三個(gè)基本注解:

  • @override    限定重寫父類方法 如下Student 中的 work 方法(如下代碼),如果student中寫錯(cuò)了work(如下圖),則編譯報(bào)錯(cuò);若沒(méi)有加override注解,那么如果work方法不會(huì)在編譯的時(shí)候被校驗(yàn); 若work在寫的時(shí)候?qū)懗闪藈ok()則也不會(huì)報(bào)錯(cuò);如果寫了override 則會(huì)報(bào)錯(cuò),顯示沒(méi)有重寫方法;

  • @Deprecated    用于表示所修飾的元素(類、方法等)已過(guò)時(shí);通常時(shí)因?yàn)樗揎椀慕Y(jié)構(gòu)危險(xiǎn)或存在更好的選擇;

  • @SuppressWarnIngs:抑制編譯警告

1 public class Day22Annotation10 {
 2     public static void main(String[] args) {
 3         Student student = new Student("aa",1);
 4         student.work();//學(xué)生走了
 5     }
 6 }
 7 class Person{
 8     private String name;
 9     private int age;
10 
11     public String getName() {
12         return name;
13     }
14 
15     public void setName(String name) {
16         this.name = name;
17     }
18 
19     public int getAge() {
20         return age;
21     }
22 
23     public void setAge(int age) {
24         this.age = age;
25     }
26     public Person(String name, int age) {
27         super();
28         this.name = name;
29         this.age = age;
30     }
31     
32     public void work() {
33         System.out.println("人走了");
34     }
35     public void eat() {
36         System.out.println("人吃飯");
37     }
38 }
39 class Student extends Person{
40     
41     public Student(String name, int age) {
42         super(name, age);
43         // TODO Auto-generated constructor stub
44     }
45 
46     @Override
47     public void work() {
48         System.out.println("學(xué)生走了");
49     }
50

Annotation注解怎么定義

 三、自定義注解:參照SupressWarnlngs;

  1.注解聲明:@interface
  2.內(nèi)部成員定義,通常使用 value表示
  3.可使用成員的默認(rèn)值,使用default定義
  4.如果自定義注解沒(méi)有成員,表明是一個(gè)標(biāo)識(shí)作用;

  如果注解有成員,在使用注解時(shí),需要指定成員的值,若有默認(rèn)值,則不需要指定;
  自定義注解必須配上注解的信息處理流程(反射)才有意義;
  通常指明Retention和Target

1 public @interface MyAnnotation {
2 
3     String value() default "hello";
4
1 @MyAnnotation//@MyAnnotation(value="hi")
 2 class Student extends Person{
 3     
 4     public Student(String name, int age) {
 5         super(name, age);
 6         // TODO Auto-generated constructor stub
 7     }
 8 
 9     @Override
10     public void work() {
11         System.out.println("學(xué)生走了");
12     }
13

  四、JDK中的4種元注解:

  1.Retention:

                  只能定義Annotation的生命周期,
                  RetentionPolicy3種狀態(tài):SOURCE(編譯時(shí)拋棄注解) CLASS(編譯時(shí)保留注解) RUNTIME(執(zhí)行時(shí)保留注解,只有該狀態(tài)時(shí),反射才能調(diào))
                  eg.@Retention(RetentionPolicy.RUNTIOME) 

2.Target

          只能定義Annotation的使用類型;(如下代碼)
          類型:

  • @Target(ElementType.TYPE)——接口、類、枚舉、注解

  • @Target(ElementType.FIELD)——字段、枚舉的常量

  • @Target(ElementType.METHOD)——方法

  • @Target(ElementType.PARAMETER)——方法參數(shù)

  • @Target(ElementType.CONSTRUCTOR) ——構(gòu)造函數(shù)

  • @Target(ElementType.LOCAL_VARIABLE)——局部變量

  • @Target(ElementType.ANNOTATION_TYPE)——注解

  • @Target(ElementType.PACKAGE)——包

  例如@Target({FIELD,CONSTRUCTOR});說(shuō)明該注解只能用在屬性和構(gòu)造器上,比如該注釋寫在方法前那就不行,會(huì)報(bào)錯(cuò);如下代碼;

元注釋的作用:修改時(shí)其他 annotation的annotation
  元數(shù)據(jù):對(duì)現(xiàn)有數(shù)據(jù)的修飾的數(shù)據(jù);eg.String name = "joy";這里,String和name 就是元數(shù)據(jù);

1 @Retention(RetentionPolicy.RUNTIME)
2 @Target({TYPE, FIELD, PARAMETER,CONSTRUCTOR, ElementType.TYPE_PARAMETER,ElementType.TYPE_USE})
3 public @interface MyAnnotation {
4 
5     String value() default "hello";
6

Annotation注解怎么定義

3.Documented 被他修飾的Annotation類將被javadouc 工具提取成文檔  

4.Inherited 被他修飾的Annotation將具有繼承性

五、通過(guò)反射獲取注解信息;

六、jdk8種注解的新特性:可重復(fù)注解、類型注解

  1.可重復(fù)注解;可以加多個(gè)不同類型的注解 eg.Repeatable(MyAnotations.class);

 ?、僭贛yAnnotation上聲明@Repeatable,成員值為MyAnotations.class
 ②MyAnotation的Rarget 和 Retention和MyAnotations相同;

1 @Retention(RetentionPolicy.RUNTIME)
2 @Target({ElementType.TYPE,ElementType.CONSTRUCTOR, ElementType.TYPE_PARAMETER,ElementType.TYPE_USE})
3 public @interface MyAnnotations {
4 
5     MyAnnotation[] value();
6
1 @Repeatable(MyAnnotations.class)
2 @Retention(RetentionPolicy.RUNTIME)
3 @Target({ElementType.TYPE,ElementType.CONSTRUCTOR, ElementType.TYPE_PARAMETER,ElementType.TYPE_USE})
4 public @interface MyAnnotation {
5 
6     String value() default "hello";
7

可重復(fù)注解實(shí)例:

@MyAnnotation(value="hi")
@MyAnnotation
class Student extends Person{
    
    public Student(String name, int age) {
        super(name, age);
        // TODO Auto-generated constructor stub
    }

    
    @Override
    public void work() {
        System.out.println("學(xué)生走了");
    }
}

  2.類型注解(可以修飾泛型)

  ElementType.TYPE_PARRAMETER 表示該注解能寫在類型變量的聲明語(yǔ)句種(如泛型聲明)
  ElementType.TYPE_USE 表示該注解能寫在使用類型的任何語(yǔ)句中;

類型注解(可以修飾泛型)實(shí)例:

class Generic<@MyAnnotation T>{
    public void show() throws RuntimeException{
        int num = (@MyAnnotation int )10l;
    }
}
class Generic<@MyAnnotation T>這里的@MyAnnotation,是因?yàn)樵O(shè)置了@Target({ElementType.TYPE,ElementType.CONSTRUCTOR, ElementType.TYPE_PARAMETER})

@Target設(shè)置了ElementType.TYPE_PARAMETER;所以@MyAnnotation這里不報(bào)錯(cuò);
int num = (@MyAnnotation int )10l;@Target設(shè)置了ElementType.TYPE_USE;所以這里(@MyAnnotation int )10l不報(bào)錯(cuò);
否則 報(bào)錯(cuò);

以上就是“Annotation注解怎么定義”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)名稱:Annotation注解怎么定義
網(wǎng)站鏈接:http://weahome.cn/article/jdcjid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部