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

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

未支持的操作

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

  利用static(靜態)數組Arrays.toList(),也許能將一個數組轉換成List,如下所示:
  
  //: Unsupported.java
  // Sometimes methods defined in the Collection
  // interfaces don't work!
  package c08.newcollections;
  import java.util.*;
  
  public class Unsupported {
   PRivate static String[] s = {
    "one", "two", "three", "four", "five",
    "six", "seven", "eight", "nine", "ten",
   };
   static List a = Arrays.toList(s);
   static List a2 = Arrays.toList(
    new String[] { s[3], s[4], s[5] });
   public static void main(String[] args) {
    Collection1.print(a); // Iteration
    System.out.println(
     "a.contains(" + s[0] + ") = " +
     a.contains(s[0]));
    System.out.println(
     "a.containsAll(a2) = " +
     a.containsAll(a2));
    System.out.println("a.isEmpty() = " +
     a.isEmpty());
    System.out.println(
     "a.indexOf(" + s[5] + ") = " +
     a.indexOf(s[5]));
    // Traverse backwards:
    ListIterator lit = a.listIterator(a.size());
    while(lit.hasprevious())
     System.out.print(lit.previous());
    System.out.println();
    // Set the elements to different values:
    for(int i = 0; i < a.size(); i++)
     a.set(i, "47");
    Collection1.print(a);
    // Compiles, but won't run:
    lit.add("X"); // Unsupported Operation
    a.clear(); // Unsupported
    a.add("eleven"); // Unsupported
    a.addAll(a2); // Unsupported
    a.retainAll(a2); // Unsupported
    a.remove(s[0]); // Unsupported
    a.removeAll(a2); // Unsupported
   }
  } ///:~
  
  從中可以看出,實際只實現了Collection和List接口的一部分。剩余的方法導致了不受歡迎的一種情況,名為UnsupportedOperationException。在下一章里,我們會講述違例的具體情況,但在這里有必要進行一下簡單說明。這里的要害在于“集合接口”,以及新集合庫內的另一些接口,它們都包含了“可選的”方法。在實現那些接口的集合類中,或者提供、或者沒有提供對那些方法的支持。若調用一個未獲支持的方法,就會導致一個UnsupportedOperationException(操作未支持違例),這表明出現了一個編程錯誤。
  大家或許會覺得希奇,不是說“接口”和基礎類最大的“賣點”就是它們許諾這些方法能產生一些有意義的行為嗎?上述違例破壞了那個許諾——它調用的一部分方法不僅不能產生有意義的行為,而且還會中止程序的運行。在這些情況下,類型的所謂安全保證似乎顯得一錢不值!但是,情況并沒有想象的那么壞。通過Collection,List,Set或者Map,編譯器仍然限制我們只能調用那個接口中的方法,所以它和Smalltalk還是存在一些區別的(在Smalltalk中,可為任何對象調用任何方法,而且只有在運行程序時才知道這些調用是否可行)。除此以外,以Collection作為自變量的大多數方法只能從那個集合中讀取數據——Collection的所有“read”方法都不是可選的。
  這樣一來,系統就可避免在設計期間出現接口的沖突。而在集合庫的其他設計方案中,最終經常都會得到數量過多的接口,用它們描述基本方案的每一種變化形式,所以學習和把握顯得非常困難。有些時候,甚至難于捕捉接口中的所有非凡情況,因為人們可能設計出任何新接口。但Java的“不支持的操作”方法卻達到了新集合庫的一個重要設計目標:易于學習和使用。但是,為了使這一方法真正有效,卻需滿足下述條件:
  (1) UnsupportedOperationException必須屬于一種“非常”事件。也就是說,對于大多數類來說,所有操作都應是可行的。只有在一些非凡情況下,一、兩個操作才可能未獲支持。新集合庫滿足了這一條件,因為絕大多數時候用到的類——ArrayList,LinkedList,HashList和HashMap,以及其他集合方案——都提供了對所有操作的支持。但是,假如想新建一個集合,同時不想為集合接口中的所有方法都提供有意義的定義,同時令其仍與現有庫配合,這種設計方法也確實提供了一個“后門”可以利用。
  (2) 若一個操作未獲支持,那么UnsupportedOperationException(未支持的操作違例)極有可能在實現期間出現,則不是在產品已交付給客戶以后才會出現。它究竟指出的是一個編程錯誤——不正確地使用了一個類。這一點不能十分確定,通過也可以看出這種方案的“試驗”特征——只有經過多次試驗,才能找出最理想的工作方式。
  
  在上面的例子中,Arrays.toList()產生了一個List(列表),該列表是由一個固定長度的數組后推出來的。因此唯一能夠支持的就是那些不改變數組長度的操作。在另一方面,若請求一個新接口表達不同種類的行為(可能叫作“FixedSizeList”——固定長度列表),就有遭遇更大的復雜程度的危險。這樣一來,以后試圖使用庫的時候,很快就會發現自己不知從何處下手。
  對那些采用Collection,List,Set或者Map作為參數的方法,它們的文檔應當指出哪些可選的方法是必須實現的。舉個例子來說,排序要求實現set()和Iterator.set()方法,但不包括add()和remove()。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人av番号网| 日本免费一区二区三区视频观看| 97精品久久久| 亚洲一区国产精品| 国产美女91呻吟求| 亚洲精品国产精品乱码不99按摩| 美女久久久久久久久久久| 欧美黄色成人网| 国产97色在线| 青青草成人在线| 色狠狠av一区二区三区香蕉蜜桃| 亚洲精品电影久久久| 欧美性受xxx| 国产成人亚洲综合91精品| 亚洲天堂第二页| 综合久久五月天| 精品露脸国产偷人在视频| 国产成人亚洲综合青青| 日韩大片免费观看视频播放| 欧美成人三级视频网站| 欧美激情综合亚洲一二区| 麻豆成人在线看| 亚洲毛片在线观看.| 国产精品第一区| 日韩黄色高清视频| 国产精品偷伦免费视频观看的| 亚洲美女精品久久| 91chinesevideo永久地址| 最近2019中文字幕一页二页| 亚洲女在线观看| 亚洲护士老师的毛茸茸最新章节| 成人免费高清完整版在线观看| 欧美日韩xxxxx| 欧美日韩爱爱视频| 国产精品专区第二| 日韩亚洲欧美中文在线| 亚洲一区二区三区成人在线视频精品| 国产亚洲精品成人av久久ww| 91国在线精品国内播放| 久久精品中文字幕免费mv| 亚洲国产成人精品久久| 国产亚洲xxx| 欧美成人免费小视频| 欧美乱大交做爰xxxⅹ性3| 精品日韩中文字幕| 国产精品久久久亚洲| 欧美人与性动交a欧美精品| 亚洲视频国产视频| 中文字幕亚洲欧美一区二区三区| 国内精久久久久久久久久人| 成人亚洲激情网| 国产精品欧美日韩一区二区| 国产精品88a∨| 美乳少妇欧美精品| 亚洲精品久久久久久下一站| 日本国产高清不卡| 九九热最新视频//这里只有精品| 国产精品2018| 国产综合在线观看视频| 国产精品一区=区| 日韩精品中文在线观看| 日韩精品中文字幕久久臀| 欧美日韩国产一区二区三区| 成人午夜在线视频一区| 国产精品免费视频xxxx| 日韩av免费在线播放| 国产精品久久久av久久久| 日本在线观看天堂男亚洲| 欧美一级黑人aaaaaaa做受| 亚洲视屏在线播放| 欧美香蕉大胸在线视频观看| 中文字幕欧美日韩在线| 欧美精品成人91久久久久久久| 国产欧美 在线欧美| 亚洲xxxx18| 日韩中文有码在线视频| 精品视频www| 国产精品入口日韩视频大尺度| zzjj国产精品一区二区| 亚洲人在线视频| 欧美亚洲视频在线观看| 亚洲欧美日韩久久久久久| 久久人人爽国产| 午夜精品在线视频| 蜜臀久久99精品久久久久久宅男| 国产成人欧美在线观看| 亚洲国产精品免费| 亚洲精品国产欧美| 国产精品视频公开费视频| 国产一区二区色| 日韩av在线看| 国产精品夜间视频香蕉| 久久男人的天堂| 国产拍精品一二三| xxxxxxxxx欧美| 最近2019中文字幕大全第二页| 国产精品jizz在线观看麻豆| 97精品伊人久久久大香线蕉| 亚洲精品99久久久久中文字幕| 日韩精品在线免费| 欧美一区二区三区免费视| 日韩成人免费视频| 欧洲s码亚洲m码精品一区| 国产精品久久久久7777婷婷| www.国产一区| 91夜夜揉人人捏人人添红杏| 亚洲美女精品成人在线视频| 国产精品91免费在线| 欧美老少配视频| 成人444kkkk在线观看| 国产精品入口福利| 成人妇女免费播放久久久| 日韩美女免费观看| 成人网中文字幕| 一区二区欧美亚洲| 欧美综合第一页| 一区二区三区视频免费在线观看| 欧美激情图片区| 午夜免费久久久久| 韩国国内大量揄拍精品视频| 欧美激情一区二区三区在线视频观看| 欧美大尺度激情区在线播放| 日韩激情av在线免费观看| 欧美又大又硬又粗bbbbb| 粉嫩av一区二区三区免费野| 日韩亚洲国产中文字幕| 国产精品第七十二页| 91久久在线播放| 色综久久综合桃花网| 国产精品久久久久久久久久久不卡| 国产精品久久久久久久久男| 亚洲伊人久久大香线蕉av| 国产精品美乳一区二区免费| 国产精品亚洲综合天堂夜夜| 欧美风情在线观看| 国产精品99久久久久久白浆小说| 久久久精品999| 国产精品嫩草视频| 伊人久久大香线蕉av一区二区| 91免费综合在线| 欧美日韩国产在线| 欧美老女人xx| 成人疯狂猛交xxx| 午夜精品久久久久久久99热| 国产a∨精品一区二区三区不卡| 国产精品久久77777| 亚洲欧美成人精品| 国产精品电影久久久久电影网| 91亚洲精品一区二区| 欧美国产日韩xxxxx| 91精品综合久久久久久五月天| 狠狠色香婷婷久久亚洲精品| 成人精品网站在线观看| 国产精品白丝jk喷水视频一区| 亚洲成色777777在线观看影院| 国产欧美一区二区三区在线| 北条麻妃久久精品| 日韩电影大片中文字幕| 亚洲欧美日本另类| 亚洲成色999久久网站| 欧美成人中文字幕| 九九久久国产精品| 国产91av在线| 国产精品久久国产精品99gif|