java 枚举
来源:互联网 发布:金蝶易记账数据库类型 编辑:程序博客网 时间:2024/04/28 04:22
package Ttest;public class Enum_Test{ /*最普通的枚举*/public enum ColorSelected{red, green, blue, yellow}/* 枚举也可以象一般的类一样添加方法和属性 * ,你可以为它添加静态和非静态的属性或方法, * 这一切都象你在一般的类中做的那样. */public enum Season{ // 枚举列表必须写在最前面,否则编译出错spring, summer, fall, winter;static String location = "hangzhou";public static Season getLocation() {if (location.equals("hangzhou")) {return fall;}return summer;}}//带构造方法的枚举public enum Temp{/*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错 * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值 * 如果不赋值则不能写构造器,赋值编译也出错*/a(13),b(14),c(15);private final int value;public int getValue() {return value;} //构造器默认也只能是private, 从而保证构造函数只能在内部使用Temp(int value){this.value = value;}}public static void main(String[] args) {/* * 枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过"枚举名.值"来取得相关枚举中的值 */ColorSelected color = ColorSelected.blue;switch (color) { /*注意:枚举重写了ToString(),说以枚举变量的值是不带前缀的 *所以为blue而非ColorSelect.blue */case blue:System.out.println("i chose blue");break;case red:System.out.println("i chose red");break;default:System.out.println("i chose what i really don't like one");break;}//增强的for循环System.out.println("遍历ColorSelected中的值"); /*通过values()获得枚举值的数组*/for(ColorSelected tempcColorSelected : ColorSelected.values()){System.out.println(tempcColorSelected);}/*ordinal()返回枚举值在枚举中的索引位置,从0开始*/System.out.println(ColorSelected.blue.ordinal()); /*枚举默认实现了java.lang.Comparable接口*/ System.out.println(ColorSelected.red.compareTo(ColorSelected.blue));System.out.println(Season.getLocation());for(Temp t:Temp.values()){System.out.print(t.getValue()+" ");}} }
像定义类一样去定义枚举类型,ColorSelected枚举类是一个类,而且是一个不可继承的final类,其枚举值也是静态常量。
ColorSelected color = ColorSelected.blue;
就是创建了一个实例
构造器只能私有private,绝对不允许有public构造器。 这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 但枚举类的方法和数据域可以允许外部访问。
、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法。
(1) ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。
Color.RED.ordinal(); //返回结果:0
Color.BLUE.ordinal(); //返回结果:1
(2) compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。(具体可见源代码)
Color.RED.compareTo(Color.BLUE); //返回结果 -1
(3) values()方法: 静态方法,返回一个包含全部枚举值的数组。
Color[] colors=Color.values();
for(Color c:colors){
System.out.print(c+",");
}//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
(4) toString()方法: 返回枚举常量的名称。
Color c=Color.RED;
System.out.println(c);//返回结果: RED
(5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量。
Color.valueOf("BLUE"); //返回结果: Color.BLUE
(6) equals()方法: 比较两个枚举类对象的引用。
- JAVA 枚举
- java枚举
- java枚举
- Java 枚举
- Java 枚举
- Java 枚举
- java 枚举
- java 枚举
- java枚举
- java枚举
- java枚举
- java枚举
- Java枚举
- java枚举
- java 枚举
- java枚举
- Java枚举
- Java枚举
- tomcat启动不了,tomcat5.exe一闪,startup.bat一闪问题解决办法
- 装饰模式简介
- 使用AT命令进行短信收发、电话本查询
- Asp.Net操作Excel的几种方法
- HTTp get,post数据长度的限制
- java 枚举
- 查询Oracle数据库表空间和数据文件方法
- 比较强大的ado类。收藏了,谢谢作者分享
- 手写纯HTML5 page一个
- Linux下Chrome安装目录巧迁移
- List Control DEMO
- 服务器模型(二)
- as3 apply() 不定参数(…rest parameters)的二次不定传递
- 【转】完全PHP5之session篇