是Kotlin中的枚举类;“昂贵的”;对于Android和Java一样? Kotlin中的Enum类对于Android和Java来说是否“昂贵” 在Kotlin中是否仍然可以使用@IntDefs或@StringDefs

是Kotlin中的枚举类;“昂贵的”;对于Android和Java一样? Kotlin中的Enum类对于Android和Java来说是否“昂贵” 在Kotlin中是否仍然可以使用@IntDefs或@StringDefs,java,android,kotlin,enums,Java,Android,Kotlin,Enums,当我将Kotlin Enum类反编译为Java类时,仍然在低级别使用Java Enum,这不推荐在Android开发中使用,这让我想到了这一点 Kotlin中的枚举类对于Android和Java一样“昂贵”吗?。可以是。我怀疑kotlin是否能够完成java无法完成的任何优化 在Kotlin中仍然可以使用@IntDefs或@StringDefs吗?-不是真的。这是一个两极分化的主题,Android世界中的许多人(包括我)认为使用Enum应该是首选方式。我鼓励您阅读以下链接以获得更好的想法

当我将Kotlin Enum类反编译为Java类时,仍然在低级别使用Java Enum,这不推荐在Android开发中使用,这让我想到了这一点

  • Kotlin中的枚举类对于Android和Java一样“昂贵”吗?。可以是。我怀疑kotlin是否能够完成java无法完成的任何优化
  • 在Kotlin中仍然可以使用@IntDefs或@StringDefs吗?-不是真的。这是一个两极分化的主题,Android世界中的许多人(包括我)认为使用Enum应该是首选方式。我鼓励您阅读以下链接以获得更好的想法

    杰克·沃顿的以下回答很有趣

    lint是否支持kotlin typedefs?(Kotlin的棉绒不会完全干燥 支持到AS 3.1,我们仍然使用3.0)

    你是说typealias吗?如果是,是的

    当我返回时,是否会收到详尽的线头警告 当(intDef){..}时,意外地忽略了一个可能的 类型

    这里总是需要一个其他的。不确定是否有线头警告 不过

    AS是否打算(alt+enter)快速添加 intDef

    比如现在,我们讨论的不是发货功能,而是何时发货 应该使用这种微观优化

    自2012年以来整个enum对话的总结

    我还想知道一个密封的类,其中每个实现都是一个 对象比枚举具有一些性能增益

    没有。它实际上与枚举完全相同


    Kotlin与Java在同一个JVM上运行,并编译成类似的字节码,因此我无法想象Kotlin中的枚举与Java中的枚举的行为有任何不同。也就是说,从Android代码中删除枚举属于微优化范畴,这意味着除非你的应用程序非常大,并且你知道内存占用非常有限这将是一个问题,不值得大惊小怪。此外,您真正需要做的唯一一件事就是配置ProGuard,以便在编译时将枚举转换为整数常量。@Abion47我不知道ProGuard可以做到这一点!我希望“每个实现都是对象的密封类”会更糟糕(要加载并保存在内存中的更多类)。true,我们在任何地方都使用它:)因此..在Kotlin中,在enum和@IntDef/@StringDef之间选择,您更喜欢使用enum,对吗?