天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

J2SE1.5 注釋語法

說起注解語法,對于任何一個Java開發(fā)人員來說都已經耳熟能詳了,我們每天都在使用著 @author, @param,等等編寫注釋,然后用Javadoc生成文檔。Java的這種方便的文檔生成方法受到了開發(fā)者的普遍贊譽。而從JDK1.5開始,注釋語法提供了更為強大的功能。

  我們先談談注釋語法本身,它有時候也稱為meta-data :“描述數據的數據” 。一般來說它們可以被用來生成文檔,檢查代碼間依賴關系,幫助編譯器作語法檢查。時下比較流行的工具有Xdoclet等。對于文檔生成早已經有了Javadoc工具的完美表現,而對于代碼檢查,如今Java也提供了語言級的支持。

  我們知道,Javadoc是通過提取Java源文件中的標簽信息來生成文檔。所以要學習新的注釋語法,們首先要熟悉的就是新增的標簽。新的注釋語法支持兩種標簽,系統標準標簽和用戶自定義標簽。標簽的符號也原先一樣,@符號加上標簽名字。我們先從JDK1.5自帶的標準標簽說起。

  首先介紹@override , 也不用多羅嗦,顧名思義了,就是用來說明方法覆載的。我們假設有一個子類必須要覆載父類的方法.

  ================================================================================
  public class Parent{

  public void foo(){
  System.out.println("Original Implementation of foo");
  }

  }

  public class Child extends Parent{

  @Override
  public void foo(){
  System.out.println("Overide Implementation of foo");
  }

  }
  ================================================================================

  目前為止我們看不出來這個@Override給我們帶來了任何好處,所以我們先說說加個這個標簽后,我們用Javac編譯的時候編譯器執(zhí)行了些什么呢?編譯器會檢查這個方法,然后從父類查找是否有這個方法,否則就編譯出錯。這個特性可以幫助我們避免一些低級錯誤。上面這個例子,子類想覆載foo()方法,不過你可能一時疏忽把它寫成了fob(), 對于這樣的”低級錯誤”,如果你沒有在前期就發(fā)現的話,到系統集成測試的時候,可能會化上你幾個小時甚至一兩天去找出這樣的bug。現在好了,編譯器在編譯的時候就會給出錯誤,

  Child.Java:3: method does not override a method from its superclass
  @Override
  ^
  1 error


  怎么樣,這個功能還不錯吧。
   看過了標準標簽的使用方法,我們來看看用戶自定義標簽。首先介紹@interface, 它用于定義新的注釋類型(annotation type)。新建一個注釋類型看起來和定義一Interface 沒有什么兩樣,MyTag.Java用于新建一個用戶自定義標簽,代碼如下,

  ===============================================================================
  package tiger.annotation;
  /**
  * 用戶自定義標簽??MyTag
  */
  public @interface MyTag { }

  定義了一個tag之后,我們就可以在任何Java文件中使用這個tag了,
  import tiger.annotation.MyTag;
  public class TagTest{

  @MyTag
  public void testTag(){
  }
  }
  ===============================================================================

  注釋類型還可以有成員變量,

  ==============================================================================
  package tiger.annotation;
  /**
  * 用戶自定義標簽??帶有成員變量的MyTag
  */
  public @interface MyTag {

  String name();

  int age();
  }
  =============================================================================

  然后我們可以這么使用這個標簽,

  @MyTag(name="MyTag",age=1)
  public void testTag(){
  }

  使用標簽最終是為了幫助開發(fā)人員提取注釋信息,然后根據不同需求做進一步處理,下面我們來看看如何獲取注釋信息。

  =============================================================================
  import Java.lang.annotation.Annotation;
  import tiger.annotation.MyTag;
  public class TagTest{

  @MyTag(name="MyTag",age=1)
  public void test(){
  }

  public static void main(String[] args){
  TagTest tt = new TagTest();
  try {
  Annotation[] annotation =tt.getClass().getMethod("test").getAnnotations();
  for (Annotation tag :annotation) {
  System.out.println("Tag is:" + tag);
  System.out.println("tag.name()" + ((MyTag)tag).name());
  System.out.println("tag.age()" + ((MyTag)(tag)).age());
  }
  } catch(NoSuchMethodException e) {
  e.printStackTrace();
  }
  }
  }
  ===============================================================================

  需要注意的一點是,在執(zhí)行這段代碼之前我們還有一點小工作要做,還需要給我們的自定義標簽MyTag加上一個說明標簽,@ Retention, 表明注釋信息將可以在運行時刻通過反射機制得到。如果不加入這個標簽,上面的代碼將沒有任何輸出。修改以后的MyTag如下:

  ================================================================================
  /**
  * 用戶自定義標簽??帶有成員變量的MyTag
  */
  @Retention(RetentionPolicy.RUNTIME)
  public @interface MyTag {

  String name();

  int age();
  }
  ================================================================================

  然后我們執(zhí)行TagTest可以得到輸出如下,

  Tag is:@tiger.annotation.MyTag(name=MyTag, age=1)
  tag.name()MyTag
  tag.age()1

  好了,Tiger新的注釋語法基本用法就這么簡單,基本用法雖然簡單,但是獲取注釋信息之后如何處理確很值得推敲,我們可以用他們來做一些語法檢查,文件相關性檢查,進行各種統計等等。關于更多的Tiger新注釋語法的信息,可以訪問[link=http://Java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html]。

  以上代碼在win2k + j2se5 GA下通過。

jsp技術J2SE1.5 注釋語法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 区一区二视频免费观看 | 中国人泡妞www免费 中国拍三a级的明星女 | 国家产午夜精品无人区 | 恋夜影院支持安卓视频美女 | 亚洲国产高清在线 | 欧美xxxxx九色视频免费观看 | 2020美女视频黄频大全视频 | 97人人超碰国产精品最新蜜芽 | 美女拉开腿让男生桶到爽 | 久久久午夜精品福利内容 | 小学生偷拍妈妈视频遭性教育 | 黄色精品视频 | 成人片免费看 | 亚洲福利区 | 久久se精品一区二区国产 | 国产第一页在线视频 | 亚洲精品久久久久AV无码 | 日本免费一区二区三区四区五六区 | 日本人添下面的全过程 | 在线 国产 欧美 亚洲 天堂 | 久久婷婷久久一区二区三区 | 欧美5g影院天天爽天天看 | 办公室中文BD | 飘雪在线观看免费完整版 | 领导边摸边吃奶边做爽在线观看 | 内射白浆一区二区在线观看 | 日韩熟女精品一区二区三区 | 动漫美女被羞羞动漫怪物 | 在线视频 日韩视频二区 | 99视频免费在线 | 色姐妹久久综合在线av | 午夜影院c绿象 | 国产亚洲视频在线播放香蕉 | 男女牲交全过程免费播放 | 日韩综合网 | 花蝴蝶免费观看影视 | 国产小视频免费看 | 狠狠色狠狠色综合曰曰 | 一区二区三区四区国产 | 粗暴玩烂货调教 | 亚洲福利视频导航 |