如果我拥有
public interface Foo {
public void oneMethod();
}
然后我有另一个类:
public class TestClass {
SoftReference sr;
public test() {
doSomething(this::lalala);
}
public lalala() {
}
public doSomethingFoo(Foo foo) {
sr = new SoftReference(foo);
//can sr.get() ever return null?
}
}
sr.get()
是否可能返回null?
如果使用匿名内部类或非静态内部类而不是方法引用,也想知道其行为。
WeakReference
。SoftReference
会在旧代中停留,只要还有堆空间可用。 - Marko Topolnikthis
对象,但反过来不行。因此,一旦您在自己的代码中放弃该方法引用,它就可以自由地进行垃圾回收。 - Marko TopolnikSoftReference
,那么可以使用它,但在测试和调试期间,请改用WeakReference
,因为除非内存不足,否则SoftReference
对象不会被丢弃。 - Mike Nakis