Java基础三: 枚举高级应用(向枚举值对象中添加变量和方法)
2010-05-28 18:45
351 查看
/** * JDK1.5 枚举高级应用(向枚举值对象中添加变量和方法) * * @author 张明学 * */ public class EnumStudy { public static void main(String[] args) { WeekDay weekDay = WeekDay.SUN; System.out.println("对象本身:" + weekDay);// 对象本身:SUN System.out.println("枚举name方法" + weekDay.name());// 枚举name方法SUN System.out.println("枚举ordinal方法:序号" + weekDay.ordinal());// 枚举ordinal方法:序号0 System.out.println("枚举toString方法" + weekDay.toString());// 枚举toString方法SUN // valueOf()方法:将String转化成枚举对象 System.out.println(WeekDay.valueOf("FRI")); // values()方法:返回所有的枚举值 System.out.println(WeekDay.values().length); for (WeekDay wd : WeekDay.values()) { System.out.println(wd); } // ************枚举高级应用************ \\ System.out.println("----------------"); // 枚举的每个值都是一个对象,它们都有构造方法,我们可给它重构一些构造方法 // 每次第一个次使用枚举值时,它会为所有枚举值都实例化一次 System.out.println(WeekDay2.SUN); System.out.println(WeekDay2.TUE); System.out.println("----------------"); // 枚举的每个值都是一个对象,我们也可以为它们添加一些属性和方法 TranfficLamp lamp = TranfficLamp.GREEN; // TranfficLamp枚举添加的特有的属性 System.out.println(lamp.time); // TranfficLamp枚举添加的特有的方法 System.out.println(lamp.nextLamp()); } // 普通的枚举 public enum WeekDay { SUN, MON, TUE, WED, THI, FRI, SAT; } // 有多个构造方法的枚举 public enum WeekDay2 { SUN(0), MON(1), TUE(), WED, THI, FRI, SAT; // 所有的方法或其它必须放在枚举值的下面 // 枚举的构造方法必须是private的 private WeekDay2() { System.out.println("调用第一个构造方法"); } private WeekDay2(int day) { System.out.println("调用第二个构造方法"); } } // 有抽象方法和属性的枚举 public enum TranfficLamp { RED(30) { public TranfficLamp nextLamp() { return GREEN; } }, GREEN(45) { public TranfficLamp nextLamp() { return YELLOW; } }, YELLOW(5) { public TranfficLamp nextLamp() { return RED; } }; // 该枚举有一个抽象方法 public abstract TranfficLamp nextLamp(); // 该枚举有一个属性 public int time; // 该枚举的构造方法必须要有一个int类型参数 private TranfficLamp(int time) { this.time = time; } } }
输出结果:
对象本身:SUN 枚举name方法SUN 枚举ordinal方法:序号0 枚举toString方法SUN FRI 7 SUN MON TUE WED THI FRI SAT ---------------- 调用第二个构造方法 调用第二个构造方法 调用第一个构造方法 调用第一个构造方法 调用第一个构造方法 调用第一个构造方法 调用第一个构造方法 SUN TUE ---------------- 45 YELLOW
阅读更多
相关文章推荐
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- java中调用JavaScript高级应用(在JavaScript中调用Java中对象的方法)
- 黑马程序员---java基础---面向对象中的构造方法及static关键字,变量的问题
- Java中final和多态调用成员变量、成员方法的应用(基础详解)
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解
- java基础七(成员变量 局部变量 匿名对象 封装 设计原则 private this 构造方法 static)
- java 面向对象基础 类 成员变量和局部变量 成员方法
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
- JAVA基础day05 面向对象思想 成员变量和方法 封装 构造方法和this的使用
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- JAVA面向对象基础:成员变量、方法、方法的重载、构造函数
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java基础学习之(二)—对象与类的方法参数
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据