`
strong_fee
  • 浏览: 175861 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Java Enum,你知道多少?

    博客分类:
  • Java
阅读更多
 
引用的枚举类型
public enum State {
ON, OFF
};

 

遍历

  • 使用values
for (State s : State.values()) {
			System.out.println(s.name());// s.original()访问值
		}

可以使用switch 枚举变量把枚举值作为case条件。

  • 使用EnumSet
EnumSet<State> stateSet = EnumSet.allOf(State.class);
		for (State s : stateSet) {
			System.out.println(s);
		}
  • 使用EnumMap
EnumMap<State, String> stateMap = new EnumMap<State, String>(State.class);
		stateMap.put(State.ON, "is On");
		stateMap.put(State.OFF, "is off");
		for (State s : State.values()) {
			System.out.println(s.name() + ":" + stateMap.get(s));
		}

或者使用State.class.getEnumConstants()获取State数组。

  • 使用EnumUtils.getEnumList方法
List<State> states = EnumUtils.getEnumList(State.class);

 

 

自定义枚举实例方法

public enum State {
		ON {
			@Override
			String getInfo() {
				return "ON";
			}
		},
		OFF {
			@Override
			String getInfo() {
				return "OFF";
			}
		};
		abstract String getInfo();
	};

可以为枚举实例覆盖toString()方法,如:

OFF {
		@Override
		public String toString() {
			return "关闭";
		}
	};

也可以在覆盖State的toString方法,在方法内使用switch来自定义每个枚举实例的toString值。

 

为枚举自定义值

public enum State {
	ON(1), OFF(2);

	private int value;

	private State(int i) {
		value = i;
	}

	public int getValue() {
		return value;
	}
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics