java新特性—枚举
来源:互联网 发布:春晚 知乎 编辑:程序博客网 时间:2024/05/20 09:44
枚举
限制一个类的对象产生范围。
举例:
定义一个Colour类,颜色只能取红、绿、蓝。
可以使用enum定义一种新的类,称为
枚举类型
package cn.enum.RobertChao;public enum Color{ RED,GREEN,BIUE;}
1、可以通过“枚举.内容”的形式进行取值操作。
【枚举类的名字.类中设置得内容的名字】
2、输出枚举中的全部内容,可以使用foreach完成。
foreach 与 for 的区别。
for循环,通过下标,对循环中的代码反复执行。可以通过index取得元素。
foreach,从头到尾遍历集合中的对象。foreach使用的时候,会锁定集合的对象,期间不能进行修改。
To Choice foreach or for.
foreach相对于for循环,代码减少了,foreach依赖IEnumerable。在运行的时候效率低于for循环。
在处理不确定循环次数的循环,或者循环次数需要计算的情况下。使用foreach比较方便。
在复杂的循环设计时,还是应该使用for循环更加的灵活。
利用foreach把枚举类型中的内容全部取出。
package cn.enum.RobertChao;public class ForeachEnum{ public static void main(String[] args){ for(Color c:Color.values()){ System.out.println(c); } } }
3、Enum类 和 enum关键字 。
使用enum关键字定义的枚举类,就相当是一个子类,父类是Enum类。
Enum类中定义了下面几个方法:
上述构造方法完全与name和ordinal有关
所以这个类的构造方法,在enum每次定义枚举类型的时候,实际上都会自动调用构造
4、类集对枚举的支持(EnumSet、EnumMap类)。
① EnumMap是Map接口的子类,可以存放一对内容。
`EnumMap也是可以存放一对内容的。`
举例:
EnumMap<Color,String> map = new EnumMap<Color,String>(Color.class); map.put(Color.RED,"红色"); System.out.println(map.get(Color.RED));
② EnumSet是Set接口的子类。
EnumSet.allof()、EnumSet.noneof()。
EnumSet.allof();表示将枚举的全部内容设置到集合之中。
EnumSet.noneof();表示Set集合中只能是枚举内容,但不包含枚举中的具体内容。
举例:
EnumSet<Color> set = new EnumSet.allof(Color.class);for(Color x : set){ System.out.println(x);}
让枚举实现接口
在枚举操作中,一个枚举类是允许实现多个接口的。
但是
要求此时枚举中的每个对象都必须单独各自覆写接口中的抽象方法。
举例:
package cn.com.RebortChao;interface Info{ public String getColor();}poublic enum Color implements Info{ RED{ public String getColor(){ return "红色"; } }, GREEN{ public String getColor(){ return "绿色"; } }, BLUE{ public String getColor(){ return "蓝色"; } };}
测试一下上述枚举类对接口的引用。
package cn.com.RebortChao;public class Test{ public static void main(String[] args){ for(Color c : Color.values()){ System.out.println(c.getColor()); } }}
在枚举中实现抽象方法
在枚举中定义抽象方法后,枚举中的每个对象都必须分别实现此抽象方法。
package cn.com.RebortChao;poublic enum Color{ RED{ public String getColor(){ return "红色"; } }, GREEN{ public String getColor(){ return "绿色"; } }, BLUE{ public String getColor(){ return "蓝色"; } }; public abstart String getColor();}
和继承接口有些大同小异。
- java新特性—枚举
- JAVA新特性(枚举)
- java新特性-枚举
- Java 5 新特性——枚举类型
- java 新特性 ----枚举(7)
- Java高新技术新特性之枚举
- Java--枚举(Enum)JDK1.5新特性
- 枚举新特性
- [Java5新特性]枚举
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- 黑马程序员——java编程那些事儿____jdk1.5新特性 枚举
- java基础——枚举(jdk1.5的新特性)
- java高薪技术——jdk1.5新特性和枚举
- Java生涯——高新技术---枚举及部分JDK1.5新特性
- 黑马程序员—Java中的JDK1.5新特性之枚举
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- JDK1.5新特性:java枚举的用法
- <黑马程序员>枚举--(java基础加强1.5新特性)
- 根据两个数组元素个数一样,元素一样,那么两个数组一样,写一个实现。
- Angular 2-模板
- 线程读书笔记
- LBP简介(附opencv代码)
- T
- java新特性—枚举
- nginx配置负载均衡时,假如一台tomcat宕机如何处置?
- java (数组操作)
- leetCode-Merge Sorted Array
- MyBatis + spring boot 搭建web项目
- 用if else 完成成绩的分布
- vue keep-alive生命周期
- 23种设计模式之工厂模式
- ROS学习笔记4 计算图源命名