将Java转换为Kotlin错误后实施代码

时间:2019-03-27 16:36:26

标签: android kotlin

在我来到这里之前,我已经尝试在 StackoverFlow 上找到此问题。 我尝试将 Java 类转换为 Kotlin ,但是 Android Studio 的效果不是很好。

我尝试手动执行,但未成功。

这是 Java

中的原始代码
    private static void appendHex(StringBuffer sb, byte b) {
        sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
    }

这是 Android Studio

转换的代码
    private fun appendHex(sb: StringBuffer, b: Byte) {
        sb.append(HEX[b shr 4 and 0x0f]).append(HEX[b and 0x0f])
    }

错误是转换后的, Android Studio 无法识别shrand,当我按 ALT + ENTER 时,它会弹出到Create extension function Byte.shr,然后按Enter,它会创建一个私人乐趣:

private infix fun Byte.shr(i: Int): Any {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

and相同,但是现在在弹出窗口中,它具有一个指向Import或创建私人乐趣的import kotlin.experimental.and选项:

private infix fun Any.and(i: Int): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

执行此操作并运行我的应用后,该类无法使用消息An operation is not implemented: not implemented

如何实现此功能?

1 个答案:

答案 0 :(得分:3)

您可以在Kotlin中将运算符(中缀函数)shrand用于类型Int(和Long)。
只需将b更改为b.toInt()

private fun appendHex(sb: StringBuffer, b: Byte) {
    sb.append(HEX[b.toInt() shr 4 and 0x0f]).append(HEX[b.toInt() and 0x0f])
}