如何将java.lang.String转换为kotlin.String?单击“将java文件转换为kotlin文件”时

时间:2018-12-12 03:53:10

标签: java string kotlin

当单击“将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” ?”。

1 个答案:

答案 0 :(得分:0)

Java中的String与Kotlin中的String之间是有区别的。差异可能不会那么明显,但是:

    Java中的
  • String表示:所有字符串,包括null
  • Kotlin中的
  • String意味着:所有字符串,不包括 null

您正尝试为您定义为不可为空的Kotlin字符串分配空值(因为您仅将其定义为String)。如果希望它也接受空值,则需要将类型从String更改为String?,因此,包括一个问号。这告诉Kotlin,字符串也可以为null。