将Java Collection.toArray转换为kotlin

时间:2017-11-05 09:40:01

标签: kotlin

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

from tkinter import *
import os
import tkinter.messagebox
root = Tk()
root.title('BTCLoot - Loot BTC from your home!')
logoutButton = Button(root, text='Logout')
logoutButton.grid(row=0, column=0, sticky=W)
balance = Label(text='Balance: N/A Sat.')
balance.grid(row=0, column=1, sticky=W)
root.geometry('600x250')
root.mainloop()

5 个答案:

答案 0 :(得分:1)

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

categoryStreams.toTypedArray()    //Array<ObjectStream<DocumentSample>>

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

val bin = ObjectStreamUtils.createObjectStream<DocumentSample>(*categoryStreams.toTypedArray())

答案 1 :(得分:1)

假设categoryStreams对象是Collection类型之一(List,Set等),您可以在其上调用kotlin的扩展方法toTypedArray以获取ObjectStream的数组:

这应该有效:

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

如果方法接受ObjectStream的vararg,那么你可以使用扩展运算符*将数组扩展到vararg:

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

答案 2 :(得分:0)

将Java文件转换为Kotlin

  1. 在主菜单上,指向代码菜单。
  2. 选择将Java文件转换为Kotlin文件。
  3. 完成。
  4. 在您的情况下,它会转换为:

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

答案 3 :(得分:0)

这听起来像是类型推断问题。请尝试下面的代码。我添加了categoryStreams的声明。不确定它是如何在您的代码中声明的。但是通过查看github上的代码,这是一个合理的声明。

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

这个想法是为推理提供正确的类型(转换器忽略了提供)。原始java没有推断出类型,它是一个显式的演员。

答案 4 :(得分:0)

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

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