现象
前几天用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时一定要仔细检查这种参数是否为空的设定.