国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Tiger系列四:Annotation第二部分:定制Annotation

1)定義Annotation類型

l         使用@interface聲明Annotation類型

public @interface InProgress {
 
}

l         使用Annotation類型

public class TestAnnotation {
       @InProcess
       public void test() {
         
       }
}

l         如果Annotation類型和使用它的類不在相同的包中,可以import Annotation類型,以便直接使用 @InProgress

2)添加成員

l         Annotation類型可以有成員變量,以提供有用的信息

l         定義數(shù)據(jù)成員不需要定義gettersetter方法,只需要定義一個以成員名稱命名的方法,并指定返回類型為需要的數(shù)據(jù)類型

l         簡單的例子:

public @interface TODO {
       String value();
}

l         使用帶成員的Annotation類型:

public class TestAnnotation {
       @InProcess
       @TODO("Need to finish this method later")
       public void test() {
         
       }
}

3)設(shè)置缺省值

l         要為Annotation類型的成員設(shè)置缺省值,需要在聲明成員時使用default關(guān)鍵字:

public @interface GroupTODO {
       public enum Severity {
              CRITICAL, IMPORTANT, TRIVIAL, DOCUMENTATION
       };
 
       Severity severity() default Severity.IMPORTANT;
       String item();
       String assignedTo();
       String dateAssigned();
}

l         當(dāng)然,缺省值的類型必須與成員變量聲明的類型完全相同

l         下面是使用缺省值的例子:

public class TestAnnotation {
       @InProcess
       @GroupTODO(
              item="Need to finish this method later",
              assignedTo="nelson_tu",
              dateAssigned="2005/02/05"
       )
       public void test() {
         
       }
}

l         下面是改寫缺省值的例子:

public class TestAnnotation {
       @InProcess
       //@TODO("Need to finish this method later")
       @GroupTODO(
              severity=GroupTODO.Severity.DOCUMENTATION,
              item="Need to finish this method later",
              assignedTo="nelson_tu",
              dateAssigned="2005/02/05"
       )
       public void test() {
         
       }
}

 

2、元Annotation

l         Annotation就是AnnotationAnnotation,JDK5提供了4種預(yù)定義的元Annotation

1@Target

l         @Target指定Annotation類型可以應(yīng)用的程序元素,以便在其它程序元素中誤用Annotation類型

l         程序元素的類型由java.lang.annotation.ElementType枚舉類定義:

package java.lang.annotation;
 
public enum ElementType {
  TYPE,          // Class, interface, or enum (but not annotation)
  FIELD,         // Field (including enumerated values)
  METHOD,        // Method (does not include constructors)
  PARAMETER,             // Method parameter
  CONSTRUCTOR,           // Constructor
  LOCAL_VARIABLE, // Local variable or catch clause
  ANNOTATION_TYPE,       // Annotation Types (meta-annotations)
  PACKAGE        // Java package
}

l         下面是使用@Target的例子:

@Target({ElementType.TYPE,
    ElementType.METHOD,
    ElementType.CONSTRUCTOR,
    ElementType.ANNOTATION_TYPE})
public @interface TODO {
       String value();
}

2@Retention

l         @Retention Java 編譯器處理Annotation類型的方式有關(guān)

l         這些方式由java.lang.annotation.RetentionPolicy 枚舉類定義:

package java.lang.annotation;
 
public enum RetentionPolicy {
  SOURCE,       // Annotation is discarded by the compiler
  CLASS,       // Annotation is stored in the class file, but ignored by the VM
  RUNTIME       // Annotation is stored in the class file and read by the VM
}

l         使用@Retention的例子參看后面的@Documented

3@Documented

l         @Documented指明需要在Javadoc中包含Annotation(缺省是不包含的)

l         下面是一個使用@Documented的例子:

@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface InProcess {
 
}

l         使用@Documented的一個技巧就是指定保持性策略為RetentionPolicy.RUNTIME:這樣,Annotation就會保留在編譯后的類文件中并且由虛擬機加載,然后Javadoc就可以抽取出Annotation,添加到類的HTML文檔中

4@Inherited

l         @Inherited最復(fù)雜、使用最少、也最容易造成混淆的一個

l         假設(shè)使用@InProgress 標(biāo)記一個正在開發(fā)的類,只要正確應(yīng)用@Documented,Annotation信息就會出現(xiàn)在Javadoc中;現(xiàn)在要編寫一個新類,擴展那個正在開發(fā)的類,那么使用子類,或者查看它的文檔,根本沒法表明還有什么地方?jīng)]有完成;而本來是希望@InProgress Annotation信息會被帶到子類中,這就需要使用@Inherited

l         下面是這樣的例子:

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface InProcess {
 
}

 


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java Annotation詳解
秒懂 Java注解類型(@Annotation)
JAVA 基礎(chǔ)篇-注解的概念
面試官:說說你對【注解】的理解
@interface java注解
Java Annotation之介紹篇 - 開心就好! - JavaEye技術(shù)網(wǎng)站
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服