2017-04-10 17 views
1

私はJavaライブラリを使用しています。例外クラスには、 "localizedMessage"フィールドと "description"フィールドがあります。私は理由はわかりませんが、 "description"(これはJavaのStringです)はStringとして認識されます! "description"がnullの場合、条件説明== nullはfalseを返します。コードの 例:Kotlinヌルチェックバグ

mvpView?.showToast(it.description?:it.localizedMessage) 

やエルビスなし:

if (it.description.isNullOrBlank()) { 
    mvpView?.showToast(it.localizedMessage) 
} else { 
    mvpView?.showToast(it.description) 
} 

それは常に期待通り(ヌル==「説明」を表示するようにしようとしますが、デバッグモードで「式を評価する」の説明にtrueを返します)。

Kotlinのバージョンは、説明がnullの場合1.1.1理由はゲッターにあった

+2

「localizedMessage」の代わりに「description」が表示されたことをどのように知っていますか?おそらく両方ともヌルです。 – glee8e

+1

'String!'は、文字列がJavaから来ていることを示すために使用される表記法であり、したがって、Kotlinは、それがヌル可能であるかどうかを実際には認識しません。 – pdpi

+0

@ glee8eデバッガから –

答えて

1

が、それは別の文字列の代わりの説明を返さあります。

public String getDescription() { 
    if (description != null) { 
     return description; 
    } 
    if (UNKNOWN_ERROR.equals(getCode())) { 
     return String.format("Received error with code %s", getCode()); 
    } 
    return "Failed with unknown error"; 
} 
+0

この例外はどこから来たのですか?実際の 'java.lang.Exception'には' description'プロパティはありません。 (あなた自身の回答を受け入れることもできます) –

+0

@EugenPechanec from third-party library –