首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在现代Java8api中使用位字段而不是EnumSet的合理性

在现代Java8api中使用位字段而不是EnumSet的合理性
EN

Stack Overflow用户
提问于 2014-03-23 20:15:19
回答 2查看 1.8K关注 0票数 20

EnumSetenum本身一样(都是从Java 5开始),被认为是位字段用例的非共混替代:与位字段一样快速和精益(当然,除了不是原始类型),以及要引导的类型。另一方面,最近也是多年来最受期待的Java - Streams -无耻地为Spliterator特征使用了位字段。

我是否应该认为以上这些都是核心Java专家明确承认的EnumSet并不那么好呢?我是否应该重新考虑最常见的最佳实践建议,不要使用位域?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-23 20:35:00

当看到它使用的是位字段而不是EnumSet时,感到相当惊讶。虽然在这个邮件列表线程。中讨论了rational,但原因似乎是为了能够设置和取消各种特性,而不会影响调用端的特性。使用EnumSet,要实现这一点,每次需要在不同阶段对其进行更改时,都需要创建一个新的EnumSet对象。我想这就是比特场在比赛中获胜的原因。

这句话的最后一句实质上是你在这里提出的问题:

在Java8API中出现这样的标志将会(而且应该)引起很多人的注意,因为它违背了人们已经被告知了十多年的内容。如果按原样采用,最好为文档读者提供一个很好的解释,说明为什么拒绝使用其他选项。“我们对int标志很满意,没有比这更好的了“我们知道int标志对于API不是很好,但是我们非常努力地寻找更好的替代方法,但没有效果”(如果是真的)。

票数 24
EN

Stack Overflow用户

发布于 2014-03-23 20:24:33

我是否应该重新考虑最常见的最佳实践建议,不要使用位域?

是。你应该重新考虑任何包含“总是”或“从不”的建议,不管它是“普通的”还是不那么常见。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22596495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档