enumのフィールドに値をセット

enumにフィールドを持たせてコンストラクタで値をセット、ということはよくやっているけど、enumSetterを持たせて外部から値をセットできることに今日気づいた。

こんなコード書いて、

public enum Enum {
	A, B;

	private String name;

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

こんなことができる。

Enum.A.setName("name of A");

てっきりenumの内部状態って生成後は変えられないのかと思っていた。