首页 > 开发 > 其他 > 正文

android代码转换成Kotlin时,未初始化变量报错

2019-10-20 15:57:29
字体:
来源:转载
供稿:网友

android 代码转换成Kotlin代码时,有些在Android中定义的未初始化变量,会在转成Kotlin代码时报Property must be initialized or be abstract错误。这是由于Kotlin的语法规范所致,kotlin的变量一般需要在定义的时候就进行赋值。如果非要定义时不赋值,就需要使用kotlin的lateinit修饰符修饰定义的变量,以指定其将在稍后赋值。但目前Android Studio 2.3自带的Java代码转Kotlin代码的功能,并没有针对此种变量做处理,导致直接转换会报错。

方法/步骤

1、一般的activity是这样的,定义个输入框变量

android代码,Kotlin,变量报错

2、通过 Code→Convert Java File to Kotlin File 或者快捷键 Ctrl+Alt+Shift+K将Java代码转换成Kotlin代码

android代码,Kotlin,变量报错

3、Java代码成功转换成了Kotlin代码,但定义的输入框变量却报错了。查看错误信息是

Property must be initialized or be abstract。

android代码,Kotlin,变量报错

4、也就是说Kotlin中定义的变量,要么是定义时就初始化,要么就定义成抽象的。但显然这里不能定义成抽象的,那就试着直接初始化。

android代码,Kotlin,变量报错

5、初始化后,果然不再报错。那就直接运行,却发现App直接停止运行了。查看错误日志,

android代码,Kotlin,变量报错

6、很显然,我在初始化控件时,Context还没初始化,导致了空指针异常。说明定义控件时就初始化不能解决刚才Kotlin报的错误。

几番查阅Kotlin语法、搜索资料后,才发现,Kotlin有一个lateinit修饰符。字面意思就可以知道它是表名变量需要在定义后才赋值的。

使用 lateinit修饰后,就可以愉快地玩耍了。

android代码,Kotlin,变量报错

 

CuoXin提示:

Android Studio 3.0后自带Kotlin,无需安装插件

经验基于Android Studio 2.3,3.0以后可能与此有出入


注:相关教程知识阅读请移步到kotlin教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表