當前位置:編程學習大全網 - 源碼下載 - 昌平電腦培訓分享java編程抽象類技術如何實現

昌平電腦培訓分享java編程抽象類技術如何實現

java編程壹直以來都是互聯網上使用比較廣泛的壹種編程語言,所以我們今天就壹起來了解壹下java編程中的抽象類是如何來實現的,希望通過對本文的閱讀,大家能夠對java編程技術有更深刻的認識,下面昌平電腦培訓就開始今天的主要內容吧。

AbstractMap抽象類實現了壹些簡單且通用的方法,本身並不難。但在這個抽象類中有兩個方法非常值得關註,keySet和values方法源碼的實現可以說是教科書式的典範。

抽象類通常作為壹種骨架實現,為各自子類實現公***的方法。上壹篇我們講解了Map接口,此篇對AbstractMap抽象類進行剖析研究。

Java中Map類型的數據結構有相當多,AbstractMap作為它們的骨架實現實現了Map接口部分方法,也就是說為它的子類各種Map提供了公***的方法,沒有實現的方法各種Map可能有所不同。

抽象類不能通過new關鍵字直接創建抽象類的實例,但它可以有構造方法。AbstractMap提供了壹個protected修飾的無參構造方法,意味著只有它的子類才能訪問(當然它本身就是壹個抽象類,其他類也不能直接對其實例化),也就是說只有它的子類才能調用這個無參的構造方法。

在Map接口中其內部定義了壹個Entry接口,這個接口是Map映射的內部實現用於維護壹個key-value鍵值對,key-value存儲在這個Map.Entry中。AbstractMap對這個內部接口進行了實現,壹***有兩個:壹個是可變的SimpleEntry和壹個是不可變的SimpleImmutableEntry。

publicstaticclassSimpleEntryimplementsEntry,java.io.Serializable

實現了Map.Entry接口,並且實現了Serializable(可被序列化)。

它的方法比較簡單都是取值存值的操作,對於key值的定義是壹個final修飾意味著是壹個不可變的引用。另外其setValue方法稍微特殊,存入value值返回的並不是存入的值,而是返回的以前的舊值。需要重點學習的是它重寫的equals和hashCode方法。

publicstaticclassSimpleImmutableEntryimplementsEntry,java.io.SerializableSimpleImmutableEntry

定義為不可變的Entry,其實是事實不可變,因為它不提供setValue方法,在多個線程同時訪問時自然不能通過setValue方法進行修改。它相比於SimpleEntry其key和value成員變量都被定義為了final類型。調用setValue方法將會拋出UnsupportedOperationException異常。

它的equals和hashCode方法和SimpleEntry壹致。

接下來查看AbstractMap抽象類實現了哪些Map接口中的方法。

publicintsize()

Map中定義了壹個entrySet方法,返回的是Map.Entry的Set集合,直接調用Set集合的size方法即是Map的大小。

publicbooleanisEmpty()

調用上面的size方法,等於0即為空。

publicbooleancontainsKey(Objectkey)

這個方法的實現較為簡單,通過調用entrySet方法獲取Set集合的叠代器遍歷Map.Entry,與參數key比較。Map可以存儲為null的key值,由於key=null在Map中存儲比較特殊(不能計算hashCode值),所以在這裏也做了判斷參數key是否為空。

  • 上一篇:我花錢請人做了壹個網站,現在想自己學做SEO優化,怎麽開始?
  • 下一篇:易語言如何把GB2312格式轉換成記事本裏的utf-8?
  • copyright 2024編程學習大全網