如果一个枚举类型的元素主要用在集合中,一般使用int枚举模式,将2的不同倍数赋予每个常量:

public class Text {
public static final int STYLE_BOLD = 1 << 0;
public static final int STYLE_ITALIC = 1 << 1;
public static final int STYLE_UNDERLINE = 1 << 2;
public static final int STYLE_STRIKETHROUGH = 1 << 3; public void applyStyles(int styles) {
...
}
}
text.applyStyles(STYLE_BOLD | STYLE_ITALIC);

表示为文字添加STYLE_BOLD和STYLE_ITALIC两种风格。

如果文字要添加的风格很多,applyStyles的参数就非常长,而且,当有64种风格以上的时候,就没法使用这种办法,因为1<<65已经超出了int的范围。

java.util包提供了EnumSet类来有效地表示从单个枚举类型中提取多个值的多个集合,这个类实现Set接口,提供丰富的功能、类型安全性,以及可以从任何其他Set实现中得到的互用性。

public class Text {
public enum Style {BOLD, ITALIC, UNDERLINE, STRIKETHROUGH}; public void applyStyles(Set<Style> styles) {
...
}
}

EnumSet提供静态工厂来创建集合,

text.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC));

EnumSet.of方法返回一个包含Style.BOLD, Style.ITALIC的集合。

最新文章

  1. scikit-learn 和pandas 基于windows单机机器学习环境的搭建
  2. 【mysql的编程专题①】流程控制与其他语法
  3. JS 操作 radio input(cc问卷管理)
  4. linux防火墙解封某端口
  5. Qwerty78 Trip(组合数,规律,逆元)
  6. 从后台绑定数据到ligerui 的comboBox下拉框组件
  7. uva10718 - Bit Mask(贪心)
  8. offset()值不准问题
  9. HTML5学习笔记&lt;六&gt;: HTML5框架, 背景和实体
  10. PHP之流程的控制
  11. CMD命令操作MySql数据库详解
  12. 号称了解mesos双层调度的你,先来回答下面这五个问题!
  13. 【bzoj4008 hnoi2015】 亚瑟王
  14. myeclipse附加源码进行查看的方法
  15. CentOS7.5 GlusterFS 分布式文件系统集群环境搭建
  16. codeforces263B
  17. Going Home POJ - 2195 (最小费用最大流)
  18. VS2017 15.6之后支持直接反编译了
  19. Centos 7 设置ssh只允许特定用户从指定的IP登录
  20. CF444(Div. 1简单题解)

热门文章

  1. ASP.NET购物车实现方法
  2. ios基础知识
  3. 【47】请使用traits classes表现类型信息
  4. 【19】设计class犹如设计type
  5. 部署SharePoint解决方式包时遇到的问题
  6. Java路径操作具体解释
  7. windows8 认识及使用
  8. dialog统一标准调用方法(内部记录)
  9. 【BZOJ2318】【spoj4060】game with probability Problem 概率DP
  10. 实例源码--Android高德地图实例源码