疯狂java笔记-枚举类

  1 //手动实现枚举类
  2 //步骤
  3 1.通过private将构造器隐藏起来
  4 2.把这个类的所有可能的实例都使用public static final修饰的类变量来保存
  5 3.如果有必要,可以提供一些静态方法,允许其他程序根据特定的参数来获取与之匹配的实例
  6 public class Season{
  7     //把Season类定义成不可变的,将其Field也定义成final
  8     private final String name;
  9     private final String desc;
 10     public static final Season SPRING
 11         =new Season("春天","踏春");
 12     public static final Season SUMMER
 13         = new Season("夏天","炎炎");
 14     public static final Season FALL
 15         =new Season("秋天","气爽");
 16     public static final Season WINTER
 17         =new Season("冬天","赏雪");
 18     public static Season getSeason(int seasomNim){
 19         switch(seasonNum){
 20             case:1
 21                 return SPRING;
 22                 break;
 23             case:2
 24                 return SUMMER;
 25                 break;
 26             caes:3
 27                 return FALL;
 28                 break;
 29             case:4
 30                 return WINTER;
 31                 break;
 32             default:
 33                 return null;
 34         }
 35     }
 36     //将构造器定义成private访问权限
 37     private Season(String name,String desc){
 38         this.name=name;
 39         this.desc=desc;
 40     }
 41     //只为name和desc提供getter方法
 42     public String getName(){
 43         return this.name;
 44     }
 45     public String getDesc(){
 46         return this.desc;
 47     }
 48 }
 49
 50 //测试方法
 51 public class SeasonTest{
 52     public SeasonTest(Season s){
 53         System.out.println(s.getName+
 54         s.getDesc());
 55     }
 56     public static void main(String[] args){
 57         //直接使用Season的FALL常量代表一个Season对象
 58         new SeasonTest(Season.FALL);
 59     }
 60 }
 61 //使用简单的静态常量来表示
 62 public static final int SEASON_SPRING=1;
 63 public static final int SEASON_SUMMER=2;
 64 public static final int SEASON_FALL=3;
 65 public static final int SEASON_WINTER=4;
 66
 67 枚举类实例:
 68 public enum SeasonEnum{
 69     //在第一行列出4个枚举实例
 70     SPRING,SUMMER,FALL,WINTER;
 71 }
 72
 73 //测试类
 74 public class EnumTest{
 75     public void judge(SeasonEnum s){
 76         //switch语句里的表达式可以是枚举类
 77         switch(s){
 78             case SPRING:
 79                 System.out.println("Spring");
 80                 break;
 81             case SUMMER:
 82                 System.out.println("Summer");
 83                 break;
 84             case FALL:
 85                 System.out.println("Fall");
 86                 break;
 87             case WINTER:
 88                 System.out.println("Winter");
 89                 break;
 90             default:
 91                 System.out.println("error");
 92         }
 93     }
 94     public static void main(String[] args){
 95         //所有的枚举类都有values方法,返回该枚举类的所有实例
 96         for(SeasonEnum s:SeasonEnum.values()){
 97             System.out.println(s);
 98         }
 99         //平常使用枚举实例时,总是通过EnumClass.variable的形式访问
100         new EnumTest().judge(SeasonEnum.SPRING);
101     }
102 }
时间: 2024-12-13 06:13:34

疯狂java笔记-枚举类的相关文章

java笔记--超级类Object多线程的应用+哲学家进餐算法内部类与多线程结合

关于Object类中的线程方法: Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notifyAll(),wait(),这几个方法都是用来控制线程的运行状态的. 方法列表如下: notify() : 唤醒在此对象监视器上等待的单个线程 notifyAll() : 唤醒在此对象监视器上等待的所有线程 wait() : 在其他线程时调用此对象的notify()或者notifyAll()方法前,

java笔记--String类对象解析与运用

1.String中的equals和==的区别 String是对象而非基本数据类型,不能使用"=="来判断两个字符串是否相当, 判断两个字符串内容是否相同用equals(); 判断两个字符串内存地址是否相同用"==" 2.startsWith(String str): 判断字符串是否以str为前缀 3.endsWith(String str): 判断字符串是否以str为后缀 4.String 字符串的比较: 1).compareTo()和compareToIgnore

java笔记--String类格式化当天日期转换符文档

String类格式化当天日期 转换符:%tb : 格式化为月份的英文缩写%tB : 格式化为月份的英文全写%ta : 格式化为星期%tA : 格式化为星期%ty : 格式化为两位年份值%tY : 格式化为四位年份值%tm : 格式化为两位月份值%td : 格式化为两位日期值%te : 格式化为星期一位日期值%tH : 格式化为两位24时制小时值(00-23)%tk : 格式化为两位24时制小时值(0-23)%tI : 格式化为两位12时制小时值(01-12)%tl : 格式化为两位12时制小时值

java笔记--枚举总结与详解

由于工作原因,已经有两礼拜没有更新博客了,好不容易完成了工作项目,终于又可以在博客园上愉快的玩耍了. 嗯,今天下午梳理了一下关于java枚举的笔记,比较长,不过还是觉得挺厚实的,哈哈,有出入的地方,欢迎朋友们指出来,一起学习,共同进步!! 一.枚举简介:     为什么要用枚举:     枚举是Java1.5出来之后新增的类型,它可以用来定义一组取值范围固定的的变量.     在枚举没有出来之前,要定义这样的变量,往往是通过定义一个接口,将不同的变量     使用不同的整数赋值.但是这样的却有着

JAVA学习--枚举类的使用

* 一.枚举类  * 1.如何自定义枚举类  * 2.如何使用enum关键字定义枚举类  *     >常用的方法:values() valueOf(String name)  *     >如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同.(相当于让每个对象重写抽象方法) 1 //普通枚举类 2 class Season{ 3 //1.提供类的属性,声明为private final 4 private final String seasonName; 5 p

Effective Java之枚举类

随着Effective Java这本书看的越来越多,发现在平时使用Java时犯了很多明显的错误,自己平时知道一点但缺少使用的也越来越多. 关于枚举类,书中的建议是用枚举类替代传统的静态常量,平时,如果一类数据用不同的数值表示,我正常的做法是写一串const static常量来表示,但看了这本书后发现,这样的表示方法虽然可以达到自己的目的,但是存在一些隐患,比如类型安全,还有,在使用上述方法区分不同的类型时,某一个具体的类型中的方法是在外面用过判断然后调用的,在这种情况下,代码就变得不是很漂亮.

Java 之枚举类

在某些情况下,一个类的对象是有限而且是固定的,比如季节类,它只有4个对象.这种实例有限而且固定的类,在Java里被称为枚举类. 在早期,可能会直接使用简单的静态常量来表示枚举类,例如: public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FAIL = 3; public static final int SEASON

Java笔记--枚举&注解

1.自定义枚举类的实现,例: class Season{ //1,提供类的属性,声明为rivate final private final String name; private final String Desc; //2,声明为final的属性,在构造器中初始化,构造器为private private Season(String name, String desc){ this.name = name; this.Desc = desc; } //3,通过公共的方法来调用属性 public

Java之枚举类的基本用法

创建枚举类 package com.ywlaker.enums; /** * @功能描述:季节枚举类 * @author yang.wei * @time 2015年9月1日 上午11:56:23 * @version 0.0.1 */ public enum Season { SPRING("春天","spring"), SUMMER("夏天","summer"), AUTUMN("秋天","a