鑑於下面的示例代碼是否有初始化total
的方法,以便我在以後使用它時不必執行空檢查。我無法將該值傳遞給構造函數。初始化WeakReference對象以避免空檢查
public class SampleCode
{
private WeakReference<Float> total;
public SampleCode() {
}
public void setWidget(Float total) {
this.total = new WeakReference<>(total);
}
public float calculatePercentage(Float count) {
if (total == null) {
return -1;
}
if (total.get() == null) {
return -1;
}
return count/total.get();
}
}
我願做這樣的事情在構造函數中:
this.total = new WeakReference<>(null);
但是,這並不工作。我可以初始化一個處於發佈狀態的WeakReference嗎?還是違背了類的目的?
感謝
編輯
感謝所有的反饋。
- 浮點數的使用是爲了簡化問題,但我可以完全理解這種困惑。實際被弱引用持有的對象是Android佈局中的一個視圖,並且此類位於活動生命週期之外。其被評估
- 聲明「這行不通」以前
- total.get()應分配給本地值有關:
total.get() == null
評估爲false與this.total = new WeakReference<>(null);
初始化後我現在明白這個陳述是不正確的。這將評估爲真。不過,我認爲最好不要將它初始化爲null,並在訪問之前檢查null條件。
你是什麼意思,它在ctor中初始化它不起作用? –
您似乎在這裏提出了多個問題。一個關於避免空檢查,另一個關於在空/釋放狀態下初始化。 –
爲什麼?爲什麼使用'WeakReference'?爲什麼使用'Float'?爲什麼不是'浮動'? – EJP