请帮我把这个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()
答案 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
在您的情况下,它会转换为:
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。