当前位置: 首页 > 面试题库 >

Kotlin中的类和对象之间的区别

司迪
2023-03-14
问题内容

我是Kotlin的新手,最近将一个简单文件从Java转换为Kotlin。我想知道为什么Android转换器将我的java类更改为Kotlin对象。

Java:

public class MyClass {
    static public int GenerateChecksumCrc16(byte bytes[]) {

        int crc = 0xFFFF;
        int temp;
        int crc_byte;

        for (byte aByte : bytes) {

            crc_byte = aByte;

            for (int bit_index = 0; bit_index < 8; bit_index++) {

                temp = ((crc >> 15)) ^ ((crc_byte >> 7));

                crc <<= 1;
                crc &= 0xFFFF;

                if (temp > 0) {
                    crc ^= 0x1021;
                    crc &= 0xFFFF;
                }

                crc_byte <<= 1;
                crc_byte &= 0xFF;

            }
        }

        return crc;
    }
}

转换的Kotlin:

object MyClass {
    fun GenerateChecksumCrc16(bytes: ByteArray): Int {

        var crc = 0xFFFF
        var temp: Int
        var crc_byte: Int

        for (aByte in bytes) {

            crc_byte = aByte.toInt()

            for (bit_index in 0..7) {

                temp = crc shr 15 xor (crc_byte shr 7)

                crc = crc shl 1
                crc = crc and 0xFFFF

                if (temp > 0) {
                    crc = crc xor 0x1021
                    crc = crc and 0xFFFF
                }

                crc_byte = crc_byte shl 1
                crc_byte = crc_byte and 0xFF

            }
        }

        return crc
    }
}

为什么不呢?

class MyClass {
    ... etc ...
}

任何帮助将不胜感激谢谢。


问题答案:

Kotlin对象就像一个无法实例化的类,因此必须按名称进行调用。(本身是静态类)

android转换器看到您的类仅包含静态方法,因此将其转换为Kotlin对象

在此处了解更多信息:http : //petersommerhoff.com/dev/kotlin/kotlin-for-java-
devs/#objects



 类似资料:
  • 在Kotlin的类中,一个对象和一个同伴对象有什么区别? 它的“静态”(我是java方面的)生命周期可能有区别吗?

  • 为什么不是: 如有任何帮助,我们将不胜感激。

  • 问题内容: 我从“ Head First Java”学习“多态”,然后想到了这个概念。有人可以举例说明吗? 编译器检查引用类型的类,而不是对象类型。 那么引用类型和对象类型之间有什么区别? 问题答案: 我认为它们对“对象类型”和“引用类型”的使用不是标准化的,但这是我的解释。 考虑以下代码: 该 引用 是类型的。它引用的 对象 是类型。 因此,“引用类型”为,“对象类型”为。 造成这种混乱的原因是

  • 问题内容: 比如说我有一个叫做Phone的类。 之间有什么区别? 和 和 我已经搜索过,甚至在Eclipse上尝试过,但无法弄清楚。 问题答案: 只声明一个引用处理程序,该处理程序不会指向任何地方(它是未初始化的,除非您为其分配了某些内容,否则无法使用[感谢@Anthony])。 声明一个引用处理程序,该处理程序指向一个新创建的对象(用初始化)。 创建一个新对象,但是由于没有引用存储在任何地方,因

  • 问题内容: Numpy似乎在和类型之间进行了区分。例如我可以做:: 其中dtype(’S’)和dtype(’O’)分别对应于和。 但是熊猫似乎就缺少了区分,并要挟到。:: 强制类型也无济于事。:: 此行为有任何解释吗? 问题答案: Numpy的字符串dtypes不是python字符串。 因此,故意使用本机python字符串,这需要对象dtype。 首先,让我演示一下numpy的字符串与众不同的含义

  • 问题内容: 您能否简单地解释一下Transfer对象和Domain对象之间的区别?如果您可以举一个Java示例,那就太好了。 问题答案: DTO没有任何逻辑。他们只有字段(州)。在将数据从一个层/子系统传输到另一层/子系统时使用它们 域对象可以具有逻辑(取决于您使用的是域驱动设计还是贫乏的数据模型),并且它们通常与数据库结构相关。 如果使用贫乏的数据模型(即您的域对象没有任何逻辑),则DTO和域对