Java: enum学习

[size=medium]在像C这样强调数据结构的语言里,枚举是必不可少的一种数据类型。然而在java的早期版本中,是没有一种叫做enum的独立数据结构的。所以在以前的java版本中,我们经常使用interface来simulate一个enum。[/size]


public interface Color {
static int RED = 1;
static int GREEN = 2;
static int BLUE = 3;
}

[size=medium]虽然这种simulation比较麻烦,但在以前也还应付的过去。可是随着java语言的发展,越来越多的呼声要求把enum这种数据结构独立出来,加入到java中。所以从java 1.5以后,就有了enum,这也是这篇blog要学习的topic。

学习的最好方式就是例子,先来一个:[/size]

public class EnumDemo {
private enum Color {red, blue, green}//there is not a ";"

public static void main(String[] args) {
for(Color s : Color.values()) {
//enum的values()返回一个数组,这里就是Seasons[]
System.out.println(s);
}
}
}


console results[color=blue]
red
blue
green [/color]
[size=medium]
注意事项已经在code中注释出,还要说明一点的是,这个java文件编译完成后不只有一个EnumDemo.class,还会有一个EnumDemo$Seasons.class,奇怪吧![/size]

public class EnumDemo {
private enum Color {red, blue, green}//there is not a ";"

public static void main(String[] args) {
Color s = Color.blue;

switch (s) {
case red://notice: Seasons.red will lead to compile error
System.out.println("red case");
break;
case blue:
System.out.println("blue case");
break;
case green:
System.out.println("green case");
break;
default:
break;
}
}
}

[size=medium]这个例子要说明的就是case的情况。

就这么多吗,当然不是,我们的enum结构还可以定义自己的方法和属性。[/size]

public class EnumDemo {
private enum Color {
red, blue, green;//there is a ";"

//notic: enum's method should be "static"
public static Color getColor(String s){
if(s.equals("red flag")){
return red;
} else if(s.equals("blue flag")){
return blue;
} else {
return green;
}
}
}//there is not ";"

public static void main(String[] args) {
EnumDemo demo = new EnumDemo();
System.out.println(demo.getFlagColor("red flag"));
}

public Color getFlagColor(String string){
return Color.getColor(string);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值