記錄 java 轉 kotlin 踩的一個坑 : 回調方法不執行

現象

前幾天用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時一定要仔細檢查這種參數是否爲空的設定.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章