枚举总结
2009-12-12 22:24
337 查看
枚举本质上是一个类,他编译后会生成一个class文件,并且这个类的对象是现成的,在定义类的时候,即定义好了对象, 程序员要使用的时候,只能从中选择,而无权创建。创建枚举最简单的形式如下:
enum 枚举名{ 枚举值1(..),枚举值2(..),.....;}//枚举值之间都是都好,最后一个是分号;
在没有出现枚举以前,我们往往都是通过模式来达到枚举的效果,如下:
final class Season{
public static final Season SPRING=new Season();
public static final Season WINTER=new Season();
public static final Season SUMMER=new Season();
public static final Season AUTUMN=new Season();
private Season(){}
}
枚举有如下的性质:
1、枚举中可以有构造方法、方法和属性,且该构造方法必须是private的
示例:
2、枚举不能继承类(本身有父类Enum),但可以实现接口,枚举不能有子类也就是说其本身默认是具有final属性的
3、枚举可以在switch中使用
示例:
4、枚举中可以定义抽象方法,且定义的抽象方法由枚举值实现
示例:
5、枚举实例可以由数字来指定
示例:
enum 枚举名{ 枚举值1(..),枚举值2(..),.....;}//枚举值之间都是都好,最后一个是分号;
在没有出现枚举以前,我们往往都是通过模式来达到枚举的效果,如下:
final class Season{
public static final Season SPRING=new Season();
public static final Season WINTER=new Season();
public static final Season SUMMER=new Season();
public static final Season AUTUMN=new Season();
private Season(){}
}
枚举有如下的性质:
1、枚举中可以有构造方法、方法和属性,且该构造方法必须是private的
示例:
public class EnumConstructor { public static void main(String[] a) { for (Temp t : Temp.values()) System.out.println(t + " is : " + t.getValue()); } public enum Temp { absoluteZero(-459), freezing(32), boiling(212), paperBurns(451); private final int value; Temp(int value) {//如果在Temp前面加一个public则会出现编译错误 this.value = value; } public int getValue() { return value; } } }
2、枚举不能继承类(本身有父类Enum),但可以实现接口,枚举不能有子类也就是说其本身默认是具有final属性的
3、枚举可以在switch中使用
示例:
public class EnumSwitch { private enum Color { red, blue, green } public static void main(String[] args) { doIt(Color.red); } private static void doIt(Color c){ switch (c) { case red: //red没有加引号 System.out.println("value is " + Color.red); break; case green: System.out.println("value is " + Color.green); break; case blue: System.out.println("value is : " + Color.blue); break; default : System.out.println("default"); } } }
4、枚举中可以定义抽象方法,且定义的抽象方法由枚举值实现
示例:
enum Operation{ ADD('+'){ public double calculate(double s1,double s2){ return s1+s2; } }, SUBSTRACT('-'){ public double calculate(double s1,double s2){ return s1-s2; } }, MULTIPLY('*'){ public double calculate(double s1,double s2){ return s1*s2; } }, DIVIDE('/'){ public double calculate(double s1,double s2){ return s1/s2; } }; char name; public char getName(){ return this.name; } Operation(char name){ this.name=name; } public abstract double calculate(double s1 ,double s2); }
5、枚举实例可以由数字来指定
示例:
public class EnumNumber { private enum WeekDay{Sun,Mon,Tue,Wed,Thu,Fri,Sat} public static void main(String [] args) { WeekDay a; WeekDay b; WeekDay c; a=WeekDay.values()[0];//实现方式和C#不同,c#可以直接对数字进行强制转换即可以a=(WeekDay)0; b=WeekDay.values()[1]; c=WeekDay.Wed; System.out.println("a:"+a); System.out.println("b:"+b); System.out.println("c:"+c); } }
相关文章推荐
- 结构体,结构体内存对齐,位段,枚举,联合知识总结
- java enum(枚举)使用详解 + 总结
- 枚举的总结
- 10月25日学习总结之 C#数组和枚举
- java enum(枚举)使用详解 + 总结
- 枚举的用法详细总结
- java enum(枚举)使用详解 + 总结
- .net 枚举(Enum)使用总结
- java enum(枚举)使用详解 + 总结
- java enum(枚举)使用详解 + 总结
- 【C语言总结】结构、联合、位段和枚举
- JAVA enum(枚举)使用详解 + 总结
- 黑马程序员_枚举和泛型总结
- 经典java enum(枚举)使用详解与总结
- 自定义类型中结构体、枚举等,结构体内存对齐相关要点总结
- java enum(枚举)使用详解 + 总结
- java 枚举(面试题)基本知识总结即简例
- 黑马程序员——关于常量、枚举、结构、异常的总结笔记
- Swift 枚举(enumeration)类型总结
- 写高质量OC代码52建议总结:48.多用块枚举,少用for循环