Kotlin火了一段时间了,近段关于java版权的官司谷歌也输了。趁着最近有时间,了解下Kotlin。为了更方便查看与java开发的区别,决定拿一个小项目直接改成Kotlin代码。看别人博客的时候发现AS自带有Java转Kotlin的工具,于是,我们可以很方便的使用快捷键 Ctrl + shift + alt + k 实现整个工程的java代码转换。 .java文件都转成了.kt文件。 但是代码中到处是红色错误:
最典型的就是下面这个,变量初始化问题

kotlin-error.jpg

TextView-init.jpg
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at android.content.ContextWrapper.getResources(ContextWrapper.java:
初始化的时候context都还没有初始化,肯定会出现空指针异常。
看来根据提示不能解决view报错的问题了。但是谷歌意图用Kotlin替代Java作为默认开发语言,肯定不会留下这样的坑。在网上一搜,答案立即出来了。Kotlin有个lateinit修饰符。

lateinit.jpg
基础数据类型不能使用lateinit,Kotlin也提供了方案:
- lateinit不能修饰基础数据类型
- 访问lateinit修饰的变量,如果没有初始化,会抛出异常UninitializedPropertyAccessException
private var mInt: Int by Delegates.notNull<Int>()
解决了变量初始化问题,错误少了90%
评论