第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確處理NPE

如何正確處理NPE

慕后森 2023-06-08 20:16:57
我想正確處理 NPE 警告。例子:@NullableLiveData<User> currentUser;LiveData<List<Medication>> getUserMeds() {    return parent.getMedsForUser(this.currentUser.getValue().getId());}為方法顯示兩個 NPE 警告getValue()getId()我目前正在通過檢查非空值來確保我不會在函數(shù)外部弄亂,但我會覺得在函數(shù)內(nèi)部實(shí)現(xiàn)它會更好。
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗 獲得超2個贊

在函數(shù)內(nèi)部返回值之前執(zhí)行檢查:

LiveData<List<Medication>> getUserMeds() {
    if (this.currentUser == null) return "Some default value or throw an Exception"
    return parent.getMedsForUser(this.currentUser.getValue().getId());
}


查看完整回答
反對 回復(fù) 2023-06-08
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊

這完全取決于您要創(chuàng)建哪種邏輯。

解釋

您收到此警告的原因是,如果其中一個返回null,它會崩潰,因為您遇到類似 的情況null.method(),這顯然無法正常工作。


注釋

您可以使用您已經(jīng)熟悉的注釋 (@Nullable@NotNull)。然后你的框架可以確保正確的屬性,你可以依賴它。


處理好自己

您還可以在您的方法中顯式處理大小寫,例如:

Value value = currentUser.getValue();

if (value == null) {

    // TODO Handle the case ...

}


Id id = value.getId();

if (id == null) {

    // TODO Handle the case ...

}


// They are now safe to use

筆記

但是,如果您無法真正處理這種情況,而只會因異常而崩潰,那么處理它并沒有真正的好處。

請注意,這this在您的代碼中已過時,因為您在字段和局部變量之間沒有名稱沖突。


查看完整回答
反對 回復(fù) 2023-06-08
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號