如果你讀了source爲ReadOnyObjectWrapper
,你會看到getReadOnlyProperty()
方法使用一個簡單的單一實例方案,即Javafx - 有沒有垃圾回收的ReadOnlyDoubleWrappers?
ReadOnlyPropertyImp readOnlyProperty;
public ReadOnlyDoubleProperty getReadOnlyProperty(){
if(readOnlyProperty == null){
readOnlyProperty = new ReadOnlyPropertyImp();
}
return readOnlyProperty;
}
其中ReadOnlyPropertyImp
是延長ReadOnlyDoubleProperty
嵌套類。在我看來,不過,如果我是做
ReadOnlyDoubleWrapper wrapper= new ReadOnlyDoubleWrapper();
ReadOnlyDoubleProperty property = wrapper.getReadOnlyProperty();
現在既不wrapper
也不property
將永遠是垃圾收集,因爲每個蘊含着濃厚參考其他。這是否準確?
如果所有對包裝和屬性的引用都丟失,它們都將被垃圾收集。他們互相引用並不重要。如果沒有任何一個引用它們,那麼沒有活物可以接觸到它們,並且它們會被gc化。 –