Android: enum vs static final ints?

2022-09-01 10:40:27

在Java Android应用程序中拥有一组与拥有一组s有什么优点(或缺点)?是否存在有利于使用其中一种的效率或性能优化?enumstatic final int

我在意向请求代码等上下文中问这个问题 - 它们往往是Android示例代码中的int,而不是我在C中习惯的枚举中的值。


答案 1

枚举从这个问题中得出的优势:

  • 它们比整数、字符串或布尔标志集更安全。
  • 它们导致代码更具可读性。
  • 将枚举设置为无效值比将枚举设置为 int 或字符串更困难。
  • 它们使发现变量或参数的允许值变得容易。
  • 我读到的所有内容都表明,它们在 C# 和大多数 JVM 中的执行效果与整数一样好。

我要补充一点:

  • 枚举可以具有成员变量和实例变量,而枚举则不能。int

像大多数抽象一样,一旦它们的性能赶上,它们通常无疑是有利的。特别是在您的应用程序代码(与框架代码相反)中,我会选择枚举而不是模拟它们的其他方法。


答案 2

从个人经验来看,一个非常简单的答案是,枚举提供了更好的类型安全性,换句话说,编译器可以在保持代码无错误方面发挥更积极的作用。

另一方面,由于枚举是对象世界的“二等公民”,因此它们可能难以在当今常用的一些更微妙的设计模式中使用,尤其是在涉及泛型时。

最后,您可以在位字段中使用静态最终 ints。您无法使用枚举执行以下操作:

int selectedOptions = Options.OPTION1 | Options.OPTION2 | Options.OPTION3;