将Java Collection.toArray转换为kotlin

请帮我把这个java代码转换成kotlin,我试了很多次,但是不行

ObjectStream bin = ObjectStreamUtils.createObjectStream(categoryStreams.toArray(new ObjectStream[0])); 

在Kotlin中,您可以使用toTypedArray()List获取Array

 categoryStreams.toTypedArray() //Array> 

然后,可以使用spread运算符为数组添加前缀并将其传递给ObjectStreamUtils.createObjectStream()

 val bin = ObjectStreamUtils.createObjectStream(*categoryStreams.toTypedArray()) 

假设categoryStreams对象是Collectiontypes(List,Set等)之一,你可以调用kotlin的扩展方法toTypedArray来得到一个ObjectStream的数组:

这应该工作:

 val bin = ObjectStreamUtils.createObjectStream(categoryStreams.toTypedArray()) 

如果方法接受ObjectStream的可变参数,那么可以使用传播运算符*将parameter passing给可变参数:

 val bin = ObjectStreamUtils.createObjectStream(*categoryStreams.toTypedArray()) 

将Java文件转换为Kotlin

  1. 在主菜单上,指向代码菜单。
  2. 选择转换Java文件到Kotlin文件。
  3. 完成。

在你的情况下,它转换为:

 val bin = ObjectStreamUtils.createObjectStream(categoryStreams.toArray(arrayOfNulls(0))) 

var bin = ObjectStreamUtils.createObjectStream(categoryStreams.toArray(arrayOfNulls(0)))

上面的代码将您的代码转换为kotlin。

这听起来像是一个types推断问题。 尝试下面的代码。 我添加categoryStreams的声明。 不知道如何在您的代码中声明。 但是从github上的代码看这是一个合理的声明。

 val categoryStreams = arrayListOf>() val bin = ObjectStreamUtils.createObjectStream(categoryStreams.toArray(arrayOfNulls>(0))) 

这个想法是提供正确的推断types(转换器忽略提供)。 原来的java没有推断出types,这是一个明确的演员。