我在看類java.lang.ref.Reference
(和它的子類),我想知道爲什麼它不實現Java 8的Supplier<T>
接口。爲什麼java.lang.ref.Reference <T>實現供應商<T>?
看起來像這樣應該是一個不費腦的事情。供應商的get()
方法由Reference
滿足。我猶豫要實現SoftReference<T>
的擴展的唯一原因是我自己也實現了Supplier<T>
是因爲我知道References
是垃圾收集器的特例。
是否有你可以做一類這樣的
public class SoftReferenceSupplier<T> extends SoftReference<T> implements Supplier<T>
{
public SoftReferenceSupplier(T referent)
{
super(referent);
}
public SoftReferenceSupplier<T referent, ReferenceQueue<? super T> queue)
{
super(referent,queue);
}
}
我不希望以某種方式打敗,因爲一些垃圾收集警告的SoftReferences的目的有多麼供應商的interferring預見任何問題的處理。
順便說一句,我知道SoftReferences
將返回一個完整的垃圾回收null
。我在我的程序中需要SoftReferences
,我希望它能夠實現這個功能接口以增加靈活性。
因爲這會破壞向後兼容性。參考是java 2,供應商是java 8.如果參考實現了供應商,那麼java 2將需要java 8.同樣因爲它沒有意義(引用是一個包裝器,而不是值的提供者)。 – sturcotte06
爲什麼它會增加靈活性? –
難道你不能只通過'ref :: get'到任何需要供應商的方法嗎? – VGR