Android仿String的對象駐留示例分析
本文實例分析了Android仿String的對象駐留。分享給大家供大家參考,具體如下:
String a = "abc";
String b = "abc";
a == b true;
變量a和變量b是同一個值。這不只是說它倆的值是一樣的,而是說就是同一個字符串對象。用Java的話來說就是a==b的結(jié)果是true。然而這個只對字符串以及小的整型或者長整型有效。其它的對象是不會被駐留的,也就是說如果你創(chuàng)建了兩個對象而他們的值是相等的,但他們并不是同一個對象。這個問題有時候很討厭,尤其是當你從某個持久化存儲中取出一個對象時。如果同一個對象你取了兩次,你當然希望最終取出的是同一個對象,不過實際上你取出的是兩份拷貝。換句話說你其實希望的是取出的是存儲中那個對象在內(nèi)存里面的同一個拷貝。有些存儲層是會做這樣的處理的。比如說JPA的實現(xiàn)就是遵循這個模式的,而別的情況可能你就得自己去做緩存了。
如何讓自己的對象,也好似上面string一樣呢;使用下面這個類吧
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));
}
}
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例
這篇文章主要介紹了Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例,Android中自帶的JSONObject非常好用,需要的朋友可以參考下2016-03-03
Android百度定位導航之基于百度地圖移動獲取位置和自動定位
項目需求是這樣的,首先定位我當前的起始位置,并跟隨移動不斷自動定位我的當前位置,下面通過本文給大家介紹android百度定位導航之基于百度地圖移動獲取位置和自動定位,需要的朋友參考下2016-01-01
Android編程簡單設(shè)置ListView分割線的方法
這篇文章主要介紹了Android編程簡單設(shè)置ListView分割線的方法,涉及Android布局簡單操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2017-02-02
android使用Jsoup 抓取頁面的數(shù)據(jù)
本篇文章主要介紹了android使用Jsoup 抓取頁面的數(shù)據(jù),jsoup 是一款Java的HTML解析器,有需要的朋友可以了解一下。2016-11-11
點擊圖標進入指定瀏覽器將首頁設(shè)置全透明解決一閃而過問題
進入瀏覽器之前有一個頁面閃了一下,那是因為從那個空白的首頁跳過去的。解決的辦法是把他變成透明的就好了2014-08-08

