現象
前幾天用AS自帶工具把一個java轉化爲了kotlin
原JAVA
private SynthesizerListener mSpeakListener = new SynthesizerListener() {
...
@Override
public void onCompleted(SpeechError speechError) {
...
}
...
};
轉化後的kotlin
private val mSpeakListener = object : SynthesizerListener {
...
override fun onCompleted(speechError: SpeechError) {
..
}
...
}
最近測試發現 onComplete 始終不回調, 大量排查纔想出這種可能, 把 onCompleted(speechError: SpeechError)
修改爲了 onCompleted(speechError: SpeechError?)
, 允許參數爲空之後, 終於回調成功.
思考
java對是否爲空檢驗不嚴格, 當轉化爲kotlin時, 也不會自動添加?以允許空參數.
當參數確實爲空的時候, 要麼直接Kotlin校驗崩潰, 要麼就直接不調用.
以後再通過java轉化kotlin時一定要仔細檢查這種參數是否爲空的設定.