Android仿String的對(duì)象駐留示例分析
本文實(shí)例分析了Android仿String的對(duì)象駐留。分享給大家供大家參考,具體如下:
String a = "abc";
String b = "abc";
a == b true;
變量a和變量b是同一個(gè)值。這不只是說它倆的值是一樣的,而是說就是同一個(gè)字符串對(duì)象。用Java的話來說就是a==b的結(jié)果是true。然而這個(gè)只對(duì)字符串以及小的整型或者長(zhǎng)整型有效。其它的對(duì)象是不會(huì)被駐留的,也就是說如果你創(chuàng)建了兩個(gè)對(duì)象而他們的值是相等的,但他們并不是同一個(gè)對(duì)象。這個(gè)問題有時(shí)候很討厭,尤其是當(dāng)你從某個(gè)持久化存儲(chǔ)中取出一個(gè)對(duì)象時(shí)。如果同一個(gè)對(duì)象你取了兩次,你當(dāng)然希望最終取出的是同一個(gè)對(duì)象,不過實(shí)際上你取出的是兩份拷貝。換句話說你其實(shí)希望的是取出的是存儲(chǔ)中那個(gè)對(duì)象在內(nèi)存里面的同一個(gè)拷貝。有些存儲(chǔ)層是會(huì)做這樣的處理的。比如說JPA的實(shí)現(xiàn)就是遵循這個(gè)模式的,而別的情況可能你就得自己去做緩存了。
如何讓自己的對(duì)象,也好似上面string一樣呢;使用下面這個(gè)類吧
import java.lang.ref.WeakReference; import java.util.WeakHashMap; class WeakPool<T> { private final WeakHashMap<T, WeakReference<T>> pool = new WeakHashMap<T, WeakReference<T>>(); public T get(T object) { final T res; WeakReference<T> ref = pool.get(object); if (ref != null) { res = ref.get(); } else { res = null; } return res; } public void put(T object) { pool.put(object, new WeakReference<T>(object)); } }
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
安卓 獲取手機(jī)IP地址的實(shí)現(xiàn)代碼
本篇文章主要介紹 Android 4.0 獲取手機(jī)IP地址的方法,附有實(shí)現(xiàn)代碼,具有參考價(jià)值,希望對(duì)有需要的小伙伴有幫助2016-07-07加載頁(yè)面遮擋耗時(shí)操作任務(wù)頁(yè)面--第三方開源之AndroidProgressLayout
AndroidProgressLayout實(shí)現(xiàn)為界面添加圓形進(jìn)度條。調(diào)用setprogress()方法顯示和隱藏進(jìn)度條,這篇文章主要介紹了加載頁(yè)面遮擋耗時(shí)操作任務(wù)頁(yè)面--第三方開源之AndroidProgressLayout的相關(guān)資料,需要的朋友可以參考下2015-11-11android 網(wǎng)絡(luò)請(qǐng)求庫(kù)volley方法詳解
這篇文章主要介紹了android 網(wǎng)絡(luò)請(qǐng)求庫(kù)volley方法詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號(hào)、發(fā)送短信及長(zhǎng)按菜單操作方法實(shí)例小結(jié)
這篇文章主要介紹了Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號(hào)、發(fā)送短信及長(zhǎng)按菜單操作方法,以完整實(shí)例形式總結(jié)分析了Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號(hào)、發(fā)送短信及長(zhǎng)按菜單等操作的相關(guān)技巧,需要的朋友可以參考下2015-10-10Android中一種巧妙的drawable.xml替代方案分享
這篇文章主要給大家介紹了關(guān)于Android中一種巧妙的drawable.xml替代方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Android Dialog對(duì)話框?qū)嵗a講解
本文通過實(shí)例代碼給大家介紹了Android Dialog對(duì)話框的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08android利用handler實(shí)現(xiàn)倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了android利用handler實(shí)現(xiàn)倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11