沙洋论坛,少女的心小说,aekdycoin
本文实例分析了android仿string的对象驻留。分享给大家供大家参考,具体如下:
string a = "abc";
string b = "abc";
a == b true;
变量a和变量b是同一个值。这不只是说它俩的值是一样的,而是说就是同一个字符串对象。用java的话来说就是a==b的结果是true。然而这个只对字符串以及小的整型或者长整型有效。其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象。这个问题有时候很讨厌,尤其是当你从某个持久化存储中取出一个对象时。如果同一个对象你取了两次,你当然希望最终取出的是同一个对象,不过实际上你取出的是两份拷贝。换句话说你其实希望的是取出的是存储中那个对象在内存里面的同一个拷贝。有些存储层是会做这样的处理的。比如说jpa的实现就是遵循这个模式的,而别的情况可能你就得自己去做缓存了。
如何让自己的对象,也好似上面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程序设计有所帮助。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论