Tag: 科特林

从Long到ByteArray的两次转换有什么区别?

import java.lang.Long as JLong import java.lang.Byte as JByte import java.nio.ByteBuffer fun Long.toByteArray1() = ByteBuffer.allocate(JLong.SIZE / JByte.SIZE) .putLong(this) .array() fun Long.toByteArray2() = this.toString() .toByteArray(Charsets.UTF_8) fun main(args: Array) { val a1: ByteArray = 10L.toByteArray1() val a2: ByteArray = 10L.toByteArray2() println(“a1 = ${a1.toString()}”) println(“a1 = ${ByteBuffer.wrap(a1).getLong()}”) println(“a2 = ${a2.toString()}”) println(“a2 = ${String(a2, Charsets.UTF_8)}”) } toByteArray1()和toByteArray2()有什么区别? 如果我发送字节到输出流接收器将得到?

在Kotlin的`forEach`中`break`和`continue`

Kotlin有非常好的迭代函数,比如forEach或者repeat ,但是我不能让break和continue它们(local和non-local): repeat(5) { break } (1..5).forEach { continue@forEach } 目标是尽可能接近地使用函数式语法来模仿通常的循环。 这在Kotlin的一些老版本中是绝对有可能的,但我很难重现这个语法。 问题可能是标签(M12)的一个错误,但我认为第一个例子应该工作。 在我看来,我已经读了一些关于特殊技巧/注释的地方,但我找不到任何关于这个主题的参考。 可能看起来像下面这样: public inline fun repeat(times: Int, @loop body: (Int) -> Unit) { for (index in 0..times – 1) { body(index) } }

是否有一个相当于Swift init Kotlin(重复:计数:)

我只是想知道是否有一个相当于Swift初始化程序初始化Kotlin init(repeating:count:) 例如,创建具有空值的数组的数组非常有用 var arrayOfArray = [[String?]](repeating: [], count: 10) 我知道Kotlin有listOf但是我不知道如何在一行中传递一个空列表的数组…

“模式匹配”不适用于Int子句(分支)

我在Kotlin有一段代码(我开始学习): package io.shido.learning import java.time.Instant fun typeCheck(any: Any): Any = when (any) { (any is Int && any “(small) integer” is Int -> “integer” is Double -> “double” is String -> “string” else -> “another Any” } fun main(args: Array) { println(“type check for: 5 (${typeCheck(5)})”) println(“type check for: 20 (${typeCheck(20)})”) println(“type check for: 56.0 […]

Int :: class.javaPrimitiveType.kotlin引用不等于Int :: class.javaObjectType.kotlin

我认为情况2也应该是真实的。 这种行为是正确的吗? // CASE 1 Int::class.javaPrimitiveType!!.kotlin == Int::class.javaObjectType.kotlin // true // CASE 2 Int::class.javaPrimitiveType!!.kotlin === Int::class.javaObjectType.kotlin // false

等待服务被绑定使用协程

所以我有一个绑定到服务的方法。 fun bindService() { val intent = Intent(this, BluetoothService::class.java) bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE) } 里面的onCreate方法我使用这个代码: bindService() launch { delay(500L) service = serviceConnection.serviceBinder?.getService() as BluetoothService } 有没有更优雅的方式来等待服务被绑定比使用delay() ?

内联setter或不在Kotlin中创建未使用的setter?

我注意到Kotlin为var创建setter ,并通过setter来设置值,而不是直接设置。 我们可以让内线 ? 或者直接设置值而不创建默认的私有setter方法? lateinit var name: String private set

隐式映射到Kotlin中设置

在通过一个Set映射后,我必须明确地将其转换回Set。 例如: fun getNewSet(oldSet: Set): Set { return oldSet .map{ getNewStringFromOld(it) } .toSet() } 什么是正确的方式来映射通过该集没有明确地转换回设置?

如何访问Koltin中的静态伴侣对象的实例variables

我正在尝试在kotlin执行网络操作的kotlin 。 我有下面的代码主要构造函数正在采取Command和Context 。 我无法访问command.execute(JSONObject(jsonObj))命令variables,得到以下错误。 我不确定是什么原因造成的问题? 未解决的参考:命令 class AsyncService(val command: Command, val context: Context) { companion object { fun doGet(request: String) { doAsync { val jsonObj = java.net.URL(request).readText() command.execute(JSONObject(jsonObj)) } } } }

如何从字符串获得可选的? 和字符串在Kotlin

我已经重写了Kotlin中返回一个Optional的函数。 我如何转换String? 和Stringtypes到Optional ? 例: override fun getCurrentAuditor(): Optional { val userName = SecurityUtils.currentUserLogin return userName ?: SYSTEM_ACCOUNT } 从上面的例子来看: userName是一个String? SYSTEM_ACCOUNT是一个String 我得到的返回语句的错误,这两个variables不是Optionaltypes。