JDK1.5新特性-枚举

JDK1.5新特性------枚举

问题:某些方法所接收的数据必须是在固定范围之内的 。
解决方案:这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用。 
JDK1.5对以上问题提出了新的解决方案:就是使用枚举类解决。
    
    
  1. package com.cn.jdk15;
  2. /**
  3. * Author:Liu Zhiyong(QQ:1012421396)
  4. * Version:Version_1
  5. * Date:
  6. * Desc:
  7. JDK1.5新特性------枚举
  8. 问题:某些方法所接收的数据必须是在固定范围之内的 。
  9. 解决方案:这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用。
  10. JDK1.5对以上问题提出了新的解决方案:就是使用枚举类解决。
  11. */
  12. /*//自定义性别类
  13. class Gender{
  14. String value;
  15. public static final Gender man = new Gender("男");
  16. public static final Gender woman = new Gender("女");
  17. private Gender(String value) {
  18. super();
  19. this.value = value;
  20. }
  21. }
  22. */
  23. enum Gender{
  24. man("男"),woman("女");
  25. String value;
  26. private Gender(String value) {
  27. this.value = value;
  28. }
  29. }
  30. class Person{
  31. String name;
  32. Gender gender;
  33. public Person(String name, Gender gender) {
  34. super();
  35. this.name = name;
  36. this.gender = gender;
  37. }
  38. public String getName() {
  39. return name;
  40. }
  41. public void setName(String name) {
  42. this.name = name;
  43. }
  44. public Gender getGender() {
  45. return gender;
  46. }
  47. public void setGender(Gender gender) {
  48. this.gender = gender;
  49. }
  50. }
  51. public class Demo5 {
  52. public static void main(String[] args) {
  53. Person p = new Person("木丁西", Gender.man);
  54. p = new Person("木丁西", Gender.man);
  55. System.out.println(p.getName() + ":" + p.getGender().value);
  56. }
  57. }

枚举:一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
    比如:方向,性别,星期,季节
枚举类的定义格式:
    enum 类名{
        //枚举值
    }
枚举要注意的细节:
    1.枚举类也是一个特殊的类。
    2.枚举值默认的修饰符是  public static final
    3 .枚举值是枚举值所属的类的类型,然后枚举值是指向了本类的对象的。   例如: public static final com.cn.jdk15.Sex woman;
    4.枚举类的构造方法默认的修饰符是private。
    5.枚举类可以定义自己的成员变量与成员函数。
    6.枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
    7.枚举类可以存在抽象的方法,但是枚举值必须要实现抽象的方法。
    8.枚举值必须要位于枚举类的第一个语句。  
   
   
  1. package com.cn.jdk15;
  2. /**
  3. * Author:Liu Zhiyong(QQ:1012421396)
  4. * Version:Version_1
  5. * Date:
  6. * Desc:
  7. 枚举:一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
  8. 比如:方向,性别,星期,季节
  9. 枚举类的定义格式:
  10. enum 类名{
  11. //枚举值
  12. }
  13. 枚举要注意的细节:
  14. 1.枚举类也是一个特殊的类。
  15. 2.枚举值默认的修饰符是 public static final
  16. 3.枚举值是枚举值所属的类的类型,然后枚举值是指向了本类的对象的。 例如: public static final com.cn.jdk15.Sex woman;
  17. 4.枚举类的构造方法默认的修饰符是private。
  18. 5.枚举类可以定义自己的成员变量与成员函数。
  19. 6.枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
  20. 7.枚举类可以存在抽象的方法,但是枚举值必须要实现抽象的方法。
  21. 8.枚举值必须要位于枚举类的第一个语句。
  22. */
  23. //自定义一个枚举类
  24. enum Sex{
  25. // String value;// × 枚举值必须要位于枚举类的第一个语句。
  26. man("男") {
  27. @Override
  28. public void run() {
  29. System.out.println("man在run()....");
  30. }
  31. }, woman("女") {
  32. @Override
  33. public void run() {
  34. System.out.println("woman在run()....");
  35. }
  36. };//枚举值
  37. String value;//成员变量
  38. //相当于
  39. // public static final com.cn.jdk15.Sex man;
  40. // public static final com.cn.jdk15.Sex woman;
  41. //成员函数
  42. public void getValue(){
  43. System.out.println("value:" + this.value);
  44. }
  45. //构造函数
  46. private Sex(String value) {
  47. this.value = value;
  48. }
  49. public abstract void run();
  50. }
  51. public class Demo6 {
  52. public static void main(String[] args) {
  53. // new Sex(); //×
  54. Sex sex = Sex.man;
  55. sex.run();
  56. sex.getValue();
  57. }
  58. }

在项目中常用作常量:

1.利用序数

 2.利用构造函数,赋值,定义变量

 
     
     
  1. public class Table {
  2. /**
  3. * 餐桌状态,枚举
  4. * @author liuzhiyong
  5. *
  6. */
  7. enum TableStatus {
  8. /**
  9. * Free 枚举常量的值设置为0,表示餐桌未预定
  10. * Reserve 枚举常量的值设置为1,表示餐桌已预定
  11. */
  12. Free(0), Reserve(1);
  13. public int statusValue;
  14. private TableStatus(int value){
  15. this.statusValue = value;
  16. }
  17. }
  18. public static void main(String[] args) {
  19. System.out.println(TableStatus.Free.statusValue);
  20. System.out.println(TableStatus.Reserve.statusValue);
  21. }
  22. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值