我在我的程序中有一两个弱引用
。
举个例子:
ClassX myClassX= new ClassX(); //Line 1
WeakReference<ClassX> myWeakClassX = new WeakReference<ClassX>(myClassX); //Line 2
if(myWeakClassX.get() != null) // Line 3
{
//do something with reference //Line 4
}
我的问题:
如何确保当在第3行myWeakClassX.get()
拥有一个指向Object
的有效引用时,它在第4行也是有效的?我可以想象,如果你运气不好,在第3行和第4行之间垃圾回收器会做他的工作。请容忍我,因为我相对于Android/Java是比较新的。
感谢任何解释。
get()
方法获取的引用放入if-scope
中并转换为strong-reference
,那么没有人能确保在那一点上它不是null。对我来说,这只是将问题移动到“另一个地方”。也许在这种情况下使用Softreference
更好?实际上,只有使用strongreference
才能确保您拥有有效的引用。那么,如果它们可能导致NPE,为什么要使用weak-or softreferences
呢? - MMikeif-语句
结束后,强引用就可以被垃圾回收器回收,对吗? - MMike