亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在Eclipse 3.1體驗J2SE 5.0新特性一

2019-11-18 13:00:51
字體:
來源:轉載
供稿:網友

  本文將介紹J2SE 5.0中三個比較重要的特性: 枚舉類型, 注釋類型, 范型, 并在此基礎上介紹在如何在Eclipse 3.1開發環境中開發枚舉類型, 注釋類型和范型應用。
  
  J2SE 5.0 (Tiger)的發布是java語言發展史上的一個重要的里程碑, 是迄今為止在 Java 編程方面所取得的最大進步.
  
  J2SE 5.0提供了很多令人激動的特性.這些特性包括范型(generics)的支持, 枚舉類型(enumeration)的支持, 元數據(metadata)的支持, 自動拆箱(unboxing)/裝箱(autoboxing), 可變個數參數(varargs), 靜態導入(static imports), 以及新的線程架構(Thread framework).
  
  隨著J2SE 5.0的推出, 越來越多的集成開發環境(IDE)支持J2SE 5.0的開發. 聞名的開源Java IDE Eclipse從3.1M4開始支持J2SE 5.0的開發, 目前最新的版本是3.1RC4.
  
  本系列將介紹J2SE 5.0中三個比較重要的特性: 枚舉類型, 注釋類型, 范型, 并在此基礎上介紹在如何在Eclipse 3.1開發環境中開發枚舉類型, 注釋類型和范型應用.本文將介紹枚舉類型.
  
  1. 枚舉類型
  
  1.1枚舉類型簡介
  
  J2SE 5.0 以及之前的JDK有兩種基本方法可以來定義新類型:通過Classes 以及Interface. 對于大部分面向對象編程來說,這兩種方法看起來似乎足夠了.但是在一些非凡情況下,這些方法就不適合.例如,我們想定義一個類型 PRiority, 它只能接受 High, Medium, Low 三種值. 其他任何值都是非法的.J2SE 5.0 以前的JDK是可以構造這種類型的,但是需要做很多工作,有可能會帶來如不安全(類型安全性問題???)等潛在問題,而J2SE 5.0的枚舉類型(Enum) 能避免這些問題.
  
  Eclipse 是JAVA程序員最常用的開發平臺,而Eclipse 3.1提供對J2SE 5.0的支持,它為J2SE 5.0的新功能提供了幫助工具.在對枚舉類型的支持上,它不僅提供了枚舉類型的創建模板,而且為枚舉類型的各種開發錯誤提供錯誤提示及幫助修改.
  
  本文首先介紹枚舉類型的創建基本概念以及如何在Eclipse 3.1平臺上創建枚舉類型,然后我們通過在Eclipse 3.1開發環境中的例子來說明枚舉類型的應用.
  
  1.2 創建枚舉類型
  
  下面的例子顯示了如何創建一個最基本的枚舉類型:
  
  清單 1. 枚舉類型的定義
  
  public enum Priority {High, Medium, Low };
  
  它包括一個要害字enum ,一個新枚舉類型的名字 Priority 以及為Priority定義的一組值.
  
  在Eclipse 3.1平臺上,按照下面步驟來生成枚舉類型:(Eclipse 3.1提供了一個新的枚舉類型創建向導(wizard)以方便用戶創建枚舉類型)
  
  1) File->New->Other, 模板列表顯示出來.
  
  2) 在模板列表上選中 Java->Enum, 點擊 Next 按鈕
  
  3) 按圖 1填寫每一個域 如下:
  
  
圖 1: Eclipse 3.1 枚舉類型創建模板

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖一)

  4) 點擊 Finish 按鈕, 生成Priority 的類(定義???), 并聲明Priority 的每一個值,如下圖 2所示:(High, Medium, low從何而來???)
  
  
圖 2: 枚舉類型Priority

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖二)

  在創建枚舉類型時,注重幾個重要的概念.
  
  所有創建的枚舉類型都擴展于 java.lang.Enum. Enum 是在J2SE 5.0 里定義的一個新類, 它本身不是枚舉類型.在創建枚舉類型時,必須用enum 要害字,不能直接地定義一個繼續Enum的類來創建一個枚舉類型,盡管所有創建的枚舉類型實際上都是Enum 的子類. 假如直接繼續Enum, compiler 就會報錯(會導致編譯錯誤).如圖3 所示
  
  
圖3. 直接繼續Enum 類

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖三)

  枚舉類型里定義的每一個值都是枚舉類型的一個實例,比方說High是Priority的一個實例.枚舉類型又是擴展于Enum. 所以枚舉類型的每一個值聲明時, 缺省時都將映射到Enum(String name, int ordinal) 構造函數中.換句話說,enum Priority {High, Medium, Low } 的實現是調用了下面的Enum 構造函數:
  
  清單2 映射的構造函數調用
  
  new Enum< Priority >("High", 0);
  
  new Enum< Priority >("Medium", 1);
  
  new Enum< Priority >("Low", 2);
  
  每一個創建的枚舉類型都是Enum 的子類,除了上面調用父類 Enum 的構造函數外,枚舉類型可以使用參數為定義一些自己的構造函數.當聲明值時,只需調用此枚舉類型定義的構造函數,而且不必添加 new 要害字.在清單3里, Priority 的一個實例生成,這個實例就是High (38).
  
  清單3.其它構造函數調用
  
  enum Priority {
  
  High (38),
  
  Medium(36.5),
  
  Low (5.2);
  
  double temperature;
  
  Priority (double p)
  
  temperature = p;
  
  }
  
  另外要強調的兩點: 一是這些枚舉類型的構造函數都是私有的.它是不能被其它的類或者其它的枚舉類型調用的. 而且這個私有修飾符是由編譯器自動加的,假如我們定義這些構造函數時,在前面加上public 修飾符, 就會導致編譯錯誤, 如下圖5所示. 二是變量定義必須在枚舉類型值定義之后. 上圖中double temperature 必須在枚舉類型值定義完了(分號表示枚舉類型值定義完了, 如 Low(5.2);) 才能聲明.
  
  
圖4. 枚舉類型的構造函數是私有的

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖四)

  在J2SE 5.0以前,當我們實現一個枚舉類時,一般都是把一個整數關聯到此枚舉類的某一個值的名字,出現的問題是同一個整數可以代表不同枚舉類的值. 下面的例子里定義兩個枚舉類 Course and Grade 如下:
  
  清單4.
  
  public class Course {
  
  public static final int EnglishLit    = 1;
  
  public static final int Calculus     = 2;
  
  public static final int MusicTheory   = 3;
  
  public static final int MusicPerformance = 4;
  
  }
  
  public class Grade {
  
  public static final int A = 1;
  
  public static final int B = 2;
  
  public static final int C = 3;
  
  public static final int D = 4;
  
  public static final int F = 5;
  
  public static final int INCOMPLETE = 6;
  
  }
  
  假如開發者誤把student1.assignGrade(Grade.A)寫成student1.assignGrade(Course.EnglishList); 在編譯 階段是不能發現問題的,假如用J2SE 5.0 枚舉類型(enum)可以避免這些問題.
  
  枚舉類型每一個值都是public, static and final的.也就是說,這些值是唯一的而且一旦定義了是不能被重寫或修改.而且盡管在枚舉類型每一個值聲明時沒有出現static要害字, 實際上值都是靜態的, 而且我們不能在值前面加上static, public,final 修飾符,否則就會出現下圖 6的錯誤.
  
  
圖5 枚舉類型值的錯誤聲明

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖五)

  枚舉類型都實現了java.lang.Comparable,枚舉類型的值是可以比較排序的,排列順序就是枚舉類型定義這些值的順序.
  
  1.3 枚舉類型的應用
  
  下面各小節介紹了枚舉類型的各種應用.
  
  1.3.1循環(Iteration)
  
  當我們寫程序時,經常碰到對數組或列表里的每一個對象進行處理的情況.在J2SE 5.0以前,假如要在一個數組或列表里進行輪循時,我們的做法比較繁瑣,需要借助java.util.Iterator 類, 如下所示:
  
  清單5:
  
  List priorities = Priority.values().;
  
  for (Iterator iter = priorities.iterator(); iter.hasNext();) {
  
  Priority p = (Priority) iter.next();
  
  process(p);
  
  }
  
  現在我們可以通過J2SE 5.0 的for/in loop和枚舉類型一起使用. 這能使以前花很多時間寫的程序簡單化,如上面清單5的程序可簡化為:
  
  清單6:
  
  for (Priority g: Priority.values()){
  
  process(g);
  
  }
  
  我們把上面的偽代碼寫成程序在Eclipse3.1上運行,如下圖所示,在右下控制平臺視圖里顯示了運行結果.假如看不見控制平臺,點擊Window->Other Views->Console, 控制平臺就會出現在右下角.
  
  
圖6 枚舉類型在循環中的應用

  
 在Eclipse 3.1體驗J2SE 5.0新特性一(圖六)

  我們在使用for/in loop 時要求它的表達式要求必須是數組或者是實現了java.lang.Iterable的集合,而枚舉類型的values()函數返回的就是一個數組.另外循環變量的聲明必須是在loop里, 包括變量類型和變量名.
  
  我們不能在循環里使用一個在循環之外聲明的變量.這和J2SE 5.0以前for loop 里用的循環變量的聲明不同.
  
  1.3.2 轉換(Switch)
  
  我們常用的一種判定語句就是Switch-case 語句. 在Switch 語句中使用枚舉類型,不僅能簡化程序,而且增強了程序的可讀性.
  
  清單8.
  
  Fi

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩国产精品视频| 久久久久99精品久久久久| 欧美午夜精品伦理| 欧美日韩国产成人在线| 亚洲精品天天看| 韩曰欧美视频免费观看| 92裸体在线视频网站| 国产精品国产三级国产aⅴ9色| 欧美国产极速在线| 日韩精品在线免费观看视频| 国产91成人在在线播放| 成人黄色中文字幕| 午夜精品久久久99热福利| 中文字幕亚洲字幕| 在线观看视频亚洲| 中日韩美女免费视频网址在线观看| 久久亚洲精品国产亚洲老地址| 美女性感视频久久久| 亚洲国产日韩欧美综合久久| 国产精品一区二区三区成人| 色综合天天狠天天透天天伊人| 国产精品中文久久久久久久| 欧美性xxxx极品hd满灌| 亚洲无线码在线一区观看| 国产午夜精品视频免费不卡69堂| 欧美一级淫片丝袜脚交| 国产精品丝袜久久久久久高清| 日本亚洲欧洲色α| 欧美激情国内偷拍| 久久久精品国产一区二区| 欧美成aaa人片在线观看蜜臀| 综合网日日天干夜夜久久| 国产一区私人高清影院| 国产99久久久欧美黑人| 欧美日韩激情美女| 久久国产精品99国产精| 91av在线免费观看视频| 成人精品福利视频| 亚洲视屏在线播放| 欧美成人激情在线| 日韩中文在线视频| 久久视频精品在线| 午夜精品一区二区三区在线| 丰满岳妇乱一区二区三区| 亚洲福利视频免费观看| 色综合视频网站| 中文字幕无线精品亚洲乱码一区| 国产精品视频久| 国产欧美一区二区| 国产日韩欧美在线观看| xxx一区二区| 日韩视频一区在线| 77777少妇光屁股久久一区| 欧美午夜女人视频在线| 欧美国产日韩一区二区在线观看| 欧美午夜视频在线观看| 色噜噜狠狠狠综合曰曰曰88av| 国产亚洲免费的视频看| 国产亚洲精品美女| 国产91精品久| 26uuu另类亚洲欧美日本一| 91精品国产高清久久久久久91| 国产精品电影观看| 欧美成人精品不卡视频在线观看| 亚洲性夜色噜噜噜7777| 亚洲一级黄色av| 国产亚洲综合久久| 亚洲国产欧美日韩精品| 国产精品久久久久久久久| 91精品久久久久久久久久久久久| 亚洲a级在线观看| 中文字幕少妇一区二区三区| 日韩美女在线看| 国产精品福利在线| 久久精品国产亚洲7777| 国产啪精品视频网站| 久久久91精品国产一区不卡| 青青精品视频播放| 国内成人精品视频| 成人在线视频网| 国产精品极品美女在线观看免费| 亚洲色图五月天| 尤物九九久久国产精品的分类| 国产日韩欧美自拍| 国产精品欧美日韩久久| 欧美黑人性猛交| 97精品一区二区视频在线观看| 亚洲欧洲在线免费| 亚洲一区二区国产| 日韩欧美成人免费视频| 久久影视电视剧免费网站| 日韩在线欧美在线| 欧美黑人极品猛少妇色xxxxx| 亚洲偷欧美偷国内偷| 亚洲成人久久一区| 宅男66日本亚洲欧美视频| 欧美视频裸体精品| 91久久嫩草影院一区二区| 欧美日韩中文字幕综合视频| 亚洲美女中文字幕| 亚洲天堂免费在线| 国产精品18久久久久久首页狼| 欧美亚洲视频在线看网址| 亚洲精品国偷自产在线99热| 亚洲高清久久网| 亚洲精品国产电影| 富二代精品短视频| 麻豆国产va免费精品高清在线| 日韩一区二区福利| 欧美性xxxxxxxxx| 国产欧美日韩精品丝袜高跟鞋| 黑人巨大精品欧美一区二区| 在线观看国产精品淫| 日韩av电影在线播放| 日韩精品亚洲元码| 亚洲无亚洲人成网站77777| 九九视频直播综合网| 亚洲久久久久久久久久久| 国产精品国产自产拍高清av水多| 国产精品视频导航| 国产精品日韩在线观看| 性色av一区二区三区| 国产精品96久久久久久| 色99之美女主播在线视频| 欧美性猛交xxxxx水多| 亚洲国产精品久久久久| 九九热r在线视频精品| 久久福利视频导航| 91视频88av| 国产在线观看91精品一区| 亚洲精品一区二区久| 日韩av电影手机在线观看| 精品国偷自产在线| 国外成人免费在线播放| 久久99热精品| 日韩av在线影院| 97热精品视频官网| 国产视频精品自拍| 欧美一级片久久久久久久| 成人免费淫片视频软件| 国产亚洲成精品久久| 亚洲国产高清福利视频| 欧美成人激情在线| 91精品国产综合久久久久久蜜臀| 日韩av一区二区在线观看| 中文字幕国产精品| 久久不射热爱视频精品| 欧美另类精品xxxx孕妇| 日本免费在线精品| 中文亚洲视频在线| 国产精品久久网| 国产精品美女999| 亚洲视频在线观看| 亚洲影影院av| 国产亚洲在线播放| 成人午夜在线视频一区| 国产成人在线亚洲欧美| www.亚洲男人天堂| 亚洲精品av在线| 亚洲自拍偷拍在线| 国产精品91免费在线| 九九热视频这里只有精品| 欧美激情一区二区久久久| 久久99精品久久久久久噜噜|