小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java注解

 Ankkaya 2017-02-14

首先來看java元注解,分別是:

  1. @Target
  2. @Retention
  3. @Documented
  4. @Inherited

這些注解和他們所修飾的類在java.lang.annotation包中,代碼都很簡單,可以去查看一下。

@Target 描述注解的使用范圍,取值:

  1. ElementType.CONSTRUCTOR:描述構造器
  2. ElementType.FIELD:描述成員變量
  3. ElementType.VARIABLE: 描述局部變量
  4. ElementType.METHOD: 描述方法
  5. ElementType.PACKAGE: 描述包
  6. ElementType.PARAMETER:描述方法的參數
  7. ElementType.Type: 描述類,接口(包括注解類型)或enum聲明.

@Retention 注解的聲明周期,即在什么級別保留,取值:

  1. RetentionPoicy.SOURCE :在源文件中有效(在.java文件中有效)
  2. RetentionPoicy.CLASS: class文件中有效
  3. RetentionPoicy.RUNTIME:在運行時有效

@Documented 用于描述其他類型的annotation應該被作為被標注的程序成員的公共API,可以被javdoc的工具文檔化,無成員。

@Inherited 用于標注某個標注是被繼承的,即父類中使用了一個Annotation,則子類繼承父類的這個annotation,annotation需要標記為RUNTIME的才可以。

java內置注解

以上是元標記,再看java內置的標準注解,@Override,@Deprecated, @SuppressWarnings

@Override

  1. @Target(ElementType.METHOD)
  2. @Retention(RetentionPolicy.SOURCE)
  3. public @interface Override {
  4. }

從前面的元注解介紹可以看到,Override用于標注方法,有效期是在源碼期間。用于標注方法重寫。

@Deprecated

  1. @Documented
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface Deprecated {
  4. }

標注 過時,或者不建議使用,也是會保留到運行時,添加了Documented元標簽,這樣在生成文檔時候,就可以生成過時的標記。

@SuppressWarnings

  1. @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
  2. @Retention(RetentionPolicy.SOURCE)
  3. public @interface SuppressWarnings {
  4.     String[] value();
  5. }

忽略錯誤報告,有效時是源碼級。

自定義注解

我們再來看看如何自定義注解。自定義的注解就和java內置的注解類似,也需要用到元注解,通過遠注解設置那些地方可以使用,設置作用域。比如:

  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target(ElementType.METHOD)
  3. public @interface MyAnnotation {
  4.     int value() default;
  5. }
  6. @Retention(RetentionPolicy.SOURCE)
  7. @Target(ElementType.METHOD)
  8. public @interface MyNewAnnotation{
  9.     String author();
  10.     int version() default 1;
  11. }
  12. public class MyClass {
  13.     @MyAnnotation(12)
  14.     public boolean isOK() {
  15.         return true;
  16.     }
  17.     @MyNewAnnotation(author=“sam”, version=2)
  18.     public int getAge() {
  19.         return 19;
  20.     }
  21. }

上面前面的代碼是定義注解,后面是使用??梢钥吹绞褂聾interface來定義注解。

注解配置參數名為注解類的方法名,并且方法沒有方法體,沒有參數沒有修飾符,不可以拋異常。返回值只能是基本類 型,String,Class,annotation,enumeration,或者他們的一維數組。只有一個默認屬性,可以直接用value()函數, 沒有屬性,則這個注解是標記注解??梢约觗efault表示默認值。

Android內置注解

作為android程序員,我們還是了解一下android中自帶的注解,以及用法含義。

@SuppressLint: 指示lint檢查時忽略注解元素的警告信息。
@TargetApi:指示lint把當前這個注解元素的target api為指定值,而不是項目設置的target api。
@NonNull:表示一個成員變量,或者參數,或者方法返回值永遠不能為NULL。
@Nullable:標識一個成員變量,或者參數,方法返回值,可以為NULL。

android.support.annotation包中還有更多的注解可以使用。

原文地址:http://blog./2015/03/06/java-annotation/

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多