<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java的基本使用之注解(Annotation)

      1、注解的基本介紹

      注解就是放在 Java 代碼的類、方法、字段、參數(shù)前的一種特殊“注釋”。注解的格式:@注解名稱(屬性名=屬性值, 屬性名=屬性值)。

      注解可以像修飾符一樣使用,可用于修飾包、類、構(gòu)造器、方法成員變量、參數(shù)、局部變量。使用注解可以簡化一些配置。注釋會被編譯器直接忽略,而注解則可以被編譯器打包進(jìn)入 class 文件,因此,注解是一種用作標(biāo)注的“元數(shù)據(jù)”。

      @Resource("hello")
      public class Hello {
          @Inject
          int n;
      
          @PostConstruct
          public void hello(@Param String name) {
              System.out.println(name);
          }
      
          @Override
          public String toString() {
              return "Hello";
          }
      }

      如何使用注解由工具決定,注解本身對代碼邏輯沒有影響。

       

      1.1、注解的分類

      Java的注解可以分為三類:

      第一類是由編譯器使用的注解,這類注解不會被編譯進(jìn)入.class文件,它們在編譯后就被編譯器扔掉了。例如:

      • @Override:讓編譯器檢查該方法是否正確地實現(xiàn)了覆寫;
      • @SuppressWarnings:告訴編譯器忽略此處代碼產(chǎn)生的警告。

       

      第二類是由工具處理.class文件使用的注解,比如有些工具會在加載class的時候,對class做動態(tài)修改,實現(xiàn)一些特殊的功能。這類注解會被編譯進(jìn)入.class文件,但加載結(jié)束后并不會存在于內(nèi)存中。這類注解一般只被一些底層庫使用,我們很少用到。

       

      第三類是在程序運(yùn)行期能夠讀取的注解,它們在加載后一直存在于JVM中,這也是最常用的注解。例如,一個配置了@PostConstruct的方法會在調(diào)用構(gòu)造方法后自動被調(diào)用(這是Java代碼讀取該注解實現(xiàn)的功能,JVM并不會識別該注解)。

       

      2、使用注解

      使用注解時,可以添加參數(shù)值。參數(shù)值必須是確定的,注解的參數(shù)值可以有默認(rèn)值,缺少某個配置參數(shù)時將使用默認(rèn)值。如果不寫參數(shù)值,相當(dāng)于全部參數(shù)都使用默認(rèn)值。

      此外,大部分注解會有一個名為value的配置參數(shù),當(dāng)注解的參數(shù)中沒有參數(shù)名,只有一個參數(shù)值并且該注解是有 value 參數(shù)的,則表示的是給 value 參數(shù)賦值。

      public class Hello {
          @Check(min=0, max=100, value=55)
          public int n;
      
          @Check(value=99)
          public int p;
      
          @Check(99) // 相當(dāng)于@Check(value=99)
          public int x;
      
          @Check
          public int y;
      }

      上面代碼中,@Check就是一個注解。第一個@Check(min=0, max=100, value=55)明確定義了三個參數(shù),第二個@Check(value=99)只定義了一個value參數(shù),它實際上和@Check(99)是完全一樣的。最后一個@Check表示所有參數(shù)都使用默認(rèn)值。

       

      3、定義注解(@interface)

      通常來說并不需要自定義一個注解,但如果需要,我們可以使用@interface語法來定義注解(Annotation)。注解的參數(shù)類似無參數(shù)方法,可以用default設(shè)定一個默認(rèn)值(強(qiáng)烈推薦),最常用的參數(shù)應(yīng)當(dāng)命名為value

      聲明一個注解要用到的東西:

      • 修飾符:訪問修飾符必須為public,不寫默認(rèn)為pubic;
      • 關(guān)鍵字:關(guān)鍵字為@interface;
      • 注解名稱:注解名稱為自定義注解的名稱,使用時還會用到;
      • 注解類型元素:注解類型元素是注解中內(nèi)容,可以理解成自定義接口的實現(xiàn)部分;
      public @interface Report {
          int type() default 0;
          String level() default "info";
          String value() default "";
      }

      @interface用于定義注解接口,接口中只能定義成員變量,且定義的成員變量必須以()結(jié)尾,可以有default關(guān)鍵字來指定默認(rèn)值,如果沒有default,則在使用注解時必須賦值。

       

      3.1、元注解(meta annotation)

      有一些注解可以修飾其他注解,這些注解就稱為元注解(meta annotation)。Java標(biāo)準(zhǔn)庫已經(jīng)定義了一些元注解,主要有@Target、@Retention、@Document、@Inherited 用來修飾注解,一般我們只需要使用元注解,通常不需要自己去編寫元注解。

       

      3.1.1、@Target

      最常用的元注解是@Target。使用@Target可以定義Annotation能夠用于Java代碼中的哪些地方:

      例如,定義注解@Report可用在方法上,我們必須添加一個@Target(ElementType.METHOD)

      @Target(ElementType.METHOD)
      public @interface Report {
          int type() default 0;
          String level() default "info";
          String value() default "";
      }

       

      3.1.2、@Retention

      另一個重要的元注解@Retention定義了Annotation的生命周期:

      如果@Retention不存在,則該Annotation默認(rèn)為CLASS。通常我們自定義的Annotation都是RUNTIME,所以要加上@Retention(RetentionPolicy.RUNTIME)這個元注解:

      @Retention(RetentionPolicy.RUNTIME)
      public @interface Report {
          int type() default 0;
          String level() default "info";
          String value() default "";
      }

       

      3.1.3、@Document

      表明該注解標(biāo)記的元素可以被Javadoc 或類似的工具文檔化

       

      3.1.4、@Inherited

      表明使用了@Inherited注解的注解,所標(biāo)記的類的子類也會擁有這個注解

       

      posted @ 2020-01-03 17:03  wenxuehai  閱讀(614)  評論(0)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 人妻在线无码一区二区三区| 亚洲成a人片在线观看中| 亚洲成人av免费一区| 中文字幕一区二区人妻| 亚洲精品一区二区妖精| 久久亚洲欧美日本精品| 亚洲精品乱码久久久久久按摩高清| 中文字幕av无码免费一区| 国产成人高清亚洲综合| 国产精品成人va在线播放| 国产精品亚洲国际在线看| 激情人妻自拍中文夜夜嗨| 99在线视频免费观看| 欧美黑吊大战白妞| 激情综合网激情五月激情| 操操操综合网| 99久久精品费精品国产一区二| 日韩av毛片福利国产福利| 苍井空毛片精品久久久| 狠狠躁夜夜躁人人爽天天| 日韩中文字幕一区二区不卡| 精品国产免费一区二区三区香蕉 | 泽州县| 99久久无色码中文字幕| 色噜噜在线视频免费观看| 午夜爽爽爽男女免费观看影院| 视频区 国产 图片区 小说区| 女同在线观看亚洲国产精品| 熟妇人妻任你躁在线视频| 国产在线线精品宅男网址| 天堂v亚洲国产v第一次| 国产精品亚洲一区二区在| 伊人蕉久影院| 亚洲国产午夜福利精品| 国产精品入口麻豆| 国产在线不卡精品网站| 日本丰满熟妇hd| 久久国产精品色av免费看| 亚洲国产精品日韩在线 | 免费人成视频在线| 99国产欧美另类久久久精品|