java枚举入门
来源:互联网 发布:js input 失去焦点 编辑:程序博客网 时间:2024/05/16 07:42
java 5新增了一个enum关键字(它与class、interface关键字的地位相同),用以定义枚举类。枚举类是一种特殊的类,它一样可以有自己的Field、方法,可以实现一个或者多个接口,也可以定义自己的构造器。
枚举类与普通的类有如下区别:
1、枚举类可以实现一个或者多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承了Object类。其中Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
2、使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能被继承。
3、枚举类的构造器只能使用private访问控制符修饰,如果省略了访问控制符,则默认是private修饰,如果指定访问控制符只能是private
4、枚举类的所有实例必须在枚举类的第一行显示列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰,无需程序员显示添加。
public enum SeasonEnum{//在第一行列出4个枚举实例,用逗号隔开,最后一个用分号SPRING,SUMMER,FALL,WINTER;}
public class EnumTest{public void jduge(SeasonEnum s){//switch语句里表达式可以是枚举值switch(s){case SPRING:System.out.println("春天");break;case SUMMER:System.out.println("夏天");break;case FALL:System.out.println("秋天");break;case WINNER:System.out.println("冬天");break;}}public static void main(String[]args){for(SeasonEnum s: SeasonEnum.values()){System.out.println(s);}}new EnumTest.judge(SeasonEnum.SPRING);}
运行结果:
SPRING
SUMMER
FALL
WINTER
春暖花开,正好踏青
public enum Gender {//此处的枚举值必须调用对应构造器来创建MALE("男"),FEMALE("女");private String name;//枚举类的构造器只能使用private修饰private Gender(String name){this.name = name;}public String getName(){ return this.name;}}
public class TestGender{public static void main(String[] args) {Gender g = Enum.valueOf(Gender.class , "FEMALE");System.out.println(g + "代表:" + g.getName());}}
运行结果:
FEMALE代表:女
在枚举中列出枚举值时,实际上就是调用构造器创建枚举对象,只是这里无需使用new关键字,也无需显示调用构造器。前面列出的枚举值无需传入参数,甚至无需使用括号,仅仅是因为前面的枚举类包含无参的构造器。
上面的例子实际上等同于:
public static final Gender MAIL = new Gender("男");
public static final Gender FEMAIL = new Gender("女");
枚举实现接口的例子:
public interface GenderDesc{void info();}public enum Gender implements GenderDesc{//此处的枚举值必须调用对应构造器来创建MALE("男"){public void info(){System.out.println("这个枚举值代表男性");}},FEMALE("女"){public void info(){System.out.println("这个枚举值代表女性");}};private String name;//枚举类的构造器只能使用private修饰private Gender(String name){this.name = name;}public String getName(){ return this.name;}/*public void info(){System.out.println("这是一个用于用于定义性别属性的枚举类");}*/}
枚举定义抽象方法
public enum Operation2{PLUS{public double eval(double x , double y){return x + y;}}, MINUS{public double eval(double x , double y){return x - y;}}, TIMES{public double eval(double x , double y){return x * y;}}, DIVIDE{public double eval(double x , double y){return x / y;}};//为枚举类定义一个抽象方法,这个抽象方法由不同枚举值提供不同的实现public abstract double eval(double x, double y);public static void main(String[] args){System.out.println(Operation.PLUS.eval(3, 4));System.out.println(Operation.MINUS.eval(5, 4));System.out.println(Operation.TIMES.eval(5, 4));System.out.println(Operation.DIVIDE.eval(5, 4));}}
- java枚举类型入门
- java枚举类型入门
- java枚举入门
- JAVA枚举类入门
- Java基础入门-Java枚举
- 【转】java枚举类型入门
- Java 5 - 枚举类型入门
- JAVA入门基础--浅谈枚举Enum类型
- java enum枚举入门实例一
- Java 枚举(enum)入门学习
- 枚举入门
- 枚举入门
- java入门-枚举类型与for/switch语句
- c# 入门级Java对比 5 —— 结构、枚举
- JAVA入门学习小结(二)枚举类型
- JAVA 枚举
- java枚举
- java枚举
- INSTALL_FAILED_UPDATE_INCOMPATIBLE和INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
- java异常处理学习笔记
- javascript innerHTML、outerHTML、innerText、outerText的区别
- 【ligerTip】鼠标滑动显示层提示
- 过时api LocalActivityManager 作用
- java枚举入门
- 自己测试的c#中讲得不是很清楚的地方
- servlet和JSP学习
- java 反射学习
- Class.forName()的作用?为什么要用?
- sql案例:删除多条内容相同的数据,只保留一条
- how to run tempest in devstack within vmware workstation
- ThreadLocal 入门
- ligerToolBar