주어진 예제 코드는 total
을 초기화하는 방법으로, 나중에 사용할 때 null 체크를하지 않아도됩니다. 나는 값을 생성자에 전달할 수 없다.널 체크를 피하기 위해 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를 초기화 할 수 있습니까, 아니면 수업 목적에 어긋날까요?
감사
편집 모든 피드백에 대한
감사합니다.
- float의 사용은 질문을 단순화하기위한 것이지만 혼란을 완전히 이해할 수 있습니다. 약한 참조가 실제로 보유하고있는 객체는 Android 레이아웃의 뷰이며이 클래스는 액티비티 라이프 사이클 외부에 존재합니다.
this.total = new WeakReference<>(null);
로 초기화하는 후
total.get() == null
false로 평가 :이
ctor에서 초기화 할 때 작동하지 않는다는 것은 무엇을 의미합니까? –
여기에 하나 이상의 질문을하는 것 같습니다. 하나는 null 검사를 피하는 것과 다른 하나는 null/해제 된 상태로 초기화하는 것입니다. –
왜? WeakReference를 사용하는 이유는 무엇입니까? 왜 '플로트'를 사용해야하나요? 왜 '떠 다니는'것이 아니겠습니까? – EJP