Java 这仍然是懦弱的参照物吗?

Java 这仍然是懦弱的参照物吗?,java,android,weak-references,Java,Android,Weak References,我正在创建一个WeakReference,并将其保存在某个地方 WeakReference<MySpecialObject> mWeakReference = new WeakReference<MySpecialObject>(new MySpecialObject("My","Special","Data")); 第1部分结束 过了一段时间,我确实打过电话 ExternalLibraryThingy#doSomethingUsefull(); //which I d

我正在创建一个
WeakReference
,并将其保存在某个地方

WeakReference<MySpecialObject> mWeakReference = new WeakReference<MySpecialObject>(new MySpecialObject("My","Special","Data"));
第1部分结束

过了一段时间,我确实打过电话

ExternalLibraryThingy#doSomethingUsefull(); //which I dont know it kept a reference while calling "useItWisely" method.
第2部分结束

问题: 在第#1部分结束之前,我的在位创建的
MySpecialObject
对象是否仍处于弱引用状态?我的意思是,如果我调用
mWeakReference.get()
,是否有可能得到
null
?换句话说,操作系统垃圾可以随意收集吗

在第#2部分结束之前,如果
使用时进行了
外部库内容
赋值
,并且在
dosomethingusullel
时使用该赋值,它是否会抛出
空点异常


我想一个简单的答案可以回答这两个问题。提前感谢。

您将解除引用的对象传递给了
外部librarythingy#useiitwise
方法。外部库并不关心您是否从弱引用检索了对象

因此,对象在外部库中是否具有强引用完全取决于对其调用的方法。如果不知道该方法的作用,就不可能知道该对象是否仍将被引用


至于你的第二个问题,这个库直接引用了
MySpecialObject
。从外部库的角度来看,它不会被随机替换为
null

,因此假设外部库Thingy保留了一个强引用;只要它保持不变,
mWeakReference.get()
就不会返回null,对吗?
ExternalLibraryThingy#doSomethingUsefull(); //which I dont know it kept a reference while calling "useItWisely" method.