JAVA枚举小结
2017-03-16 15:21
344 查看
最近在项目中看见了一种新的定义常量形式,了解了下JAVA的枚举类。
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
enum和class、interface的地位一样
使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。枚举类可以实现一个或多个接口 不能再继承其他类 因JAVA是单继承的。
枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
枚举类的构造器只能是私有的。
使用:
一、什么是枚举
枚举(enum)类型是Java5新增的特性,它是一种新的类型,允许用常量表示特定的数据片段,而且全部都已类型安全的形式表示。二、为什么不用静态变量代替枚举类
public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FALL = 3; public static final int SEASON_WINTER = 4;
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
三、枚举类的特性
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:enum和class、interface的地位一样
使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。枚举类可以实现一个或多个接口 不能再继承其他类 因JAVA是单继承的。
枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
枚举类的构造器只能是私有的。
四、枚举类的使用
定义枚举类:
package com; public enum Color { RED, GREEN, BLANK, YELLOW }使用:
package com; public class B { public static void main(String[] args) { System.out.println( isRed( Color.BLANK ) ) ; //结果: false System.out.println( isRed( Color.RED ) ) ; //结果: true } static boolean isRed( Color color ){ if ( Color.RED.equals( color )) { return true ; } return false ; } }
Switch语句中的使用:
package com; public class B { public static void main(String[] args) { showColor( Color.RED ); } static void showColor(Color color){ switch ( color ) { case BLANK: System.out.println( color ); break; case RED : System.out.println( color ); break; default: System.out.println( color ); break; } } }
自定义函数:
package com; public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); private String name ; private int index ; private Color( String name , int index ){ this.name = name ; this.index = index ; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } }
使用:
package com; public class B { public static void main(String[] args) { //输出某一枚举的值 System.out.println( Color.RED.getName() ); System.out.println( Color.RED.getIndex() ); //遍历所有的枚举 for( Color color : Color.values()){ System.out.println( color + " name: " + color.getName() + " index: " + color.getIndex() ); } } }
相关文章推荐
- java枚举小结
- JAVA中的枚举小结
- 黑马程序员————Java5的枚举小结(第五篇)
- java枚举常用场景小结
- Java enum(枚举)小结
- 黑马程序员 【】java学习之路——枚举小结
- java枚举用法小结
- java新功能之一枚举
- [转] java技术面试基本问题小结
- 数据库连接池Java实现小结
- java/mysql/linux utf8经验小结
- Java中的equals学习小结
- JAVA事件小结(转载自loveUnix论坛)
- 枚举类型入门用 Java 5.0 以类型安全的方式表示常量[摘]
- Java传参方式小结
- Java枚举,酷! (原文发表于2006-04-25 下午01:13:48)
- Java中的equals学习小结
- Java中使用枚举
- 在JAVA中使用文档对象模型DOM经验小结[转载]
- 数据库连接池java实现小结