Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

Nar*_*yan 5 java enums android kotlin

  • 对于 Android 来说,Kotlin 中的Enum类是否像 Java 一样“昂贵”?
  • 它仍然可以使用@IntDefs还是@StringDefs在 Kotlin 中使用?

当我将 Kotlin Enum 类反编译为 Java 类时,底层仍然使用了 Java Enum,不建议在 Android 开发中使用,这让我想到了这一点。

小智 3

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

杰克·沃顿 (Jake Wharton) 的 Twitter 帖子

黛安·哈克伯恩 (Diane Hackborn) 的文章和评论

Somwhat 机智的 reddit 帖子讨论了枚举的优化等

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

lint 支持 kotlin typedef 吗?(Kotlin 的 Lint 直到 AS 3.1 才会得到完全支持,我们仍在使用 3.0)

你的意思是类型别名吗?如果是这样,是的。

当我执行 return when(intDef) { .. } 并意外省略其中一种可能的类型时,是否会收到详尽的 lint 警告?

这里总是需要 else。但不确定 lint 警告。

AS 是否有意(alt + Enter 快速添加 intDef 的所有变体?

是的。

就像现在一样,我们不是在讨论发布功能,而是在讨论何时应该使用这种微优化!

自 2012 年以来整个枚举对话的总结!

我还想知道每个实现都是一个对象的密封类是否比枚举有一些性能提升

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