当单击“将java文件转换为kotlin”时,我发现类型“ java.lang.String”转换为“ kotlin.String”。但它可能为null,并抛出Exception:“ java.lang.IllegalArgumentException:指定的参数”因为非null为null”。
例如: 我的Java代码:
public void test(String arg) {
if (!TextUtils.isEmpty(arg)) {
Log.d("test", arg);
}
}
将java文件转换为kotlin文件后:
fun test(arg: String) {
if (!TextUtils.isEmpty(arg)) {
Log.d("test", arg)
}
}
我对参数“ arg”的预期类型是“字符串?”而不是“字符串”。
尽管我意识到转换器很难弄清类型是否应该为空,但我仍然想知道是否有任何方法可以配置此行为。强制将“ java.lang.String”转换为“ kotlin.String” ?”。
答案 0 :(得分:0)
Java中的String
与Kotlin中的String
之间是有区别的。差异可能不会那么明显,但是:
String
表示:所有字符串,包括null
。 String
意味着:所有字符串,不包括 null
您正尝试为您定义为不可为空的Kotlin字符串分配空值(因为您仅将其定义为String
)。如果希望它也接受空值,则需要将类型从String
更改为String?
,因此,包括一个问号。这告诉Kotlin,字符串也可以为null。