淘宝客论坛响应式php网站下载,外贸营销词,上海电商设计招聘网站,佛山做优化的公司哪家好枚举类型本质上也是一种类#xff0c;只不过这个类的对象是有限的、固定的几个#xff0c;不能让用户随意创建。 场景#xff1a; 开发中#xff0c;如果针对于某个类#xff0c;它的实例的个数是确定的。则推荐将此类声明为枚举类。 如果枚举类的实例只有一个#xff0c…枚举类型本质上也是一种类只不过这个类的对象是有限的、固定的几个不能让用户随意创建。 场景 开发中如果针对于某个类它的实例的个数是确定的。则推荐将此类声明为枚举类。 如果枚举类的实例只有一个则可以看作是单例的实现方式。 在jdk5.0之前使用 自定义枚举类的方法。步骤如下 1. 私有化类的构造器 2. 声明当前类的对象的实例变量 , 要用 final 修饰 3. 提供 get 方法 4. 创建类的实例 // 要用 psf public static final 修饰变为全局常量 以季节的枚举为例 //自定义枚举类
class Season{//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//1.私有化类的构造器private Season(String seasonName,String seasonDesc){this.seasonName seasonName;this.seasonDesc seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}//4.创建类的实例//要用psfpublic static final修饰变为全局常量public static final Season Spring new Season(春天,花开的季节);public static final Season Summer new Season(夏天,炎热的季节);public static final Season Autumn new Season(秋天,丰收的季节);public static final Season Winter new Season(冬天,寒冷的季节);Overridepublic String toString(){return Season{ seasonName seasonName \ , seasonDesc seasonDesc \ };}
} 在jdk5.0时加入使用 enum定义枚举类。步骤如下 1. 创建对象必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。 2. 声明当前类的对象的实例变量 , 要用 final 修饰 3. 私有化类的构造器 3. 提供 get 方法 还是以季节的枚举为例 //jdk5.0中使用enum关键字定义枚举类enum Season1{//1.创建对象必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。Spring(春天,花开的季节),Summer(夏天,炎热的季节),Autumn(秋天,丰收的季节),Winter(冬天,寒冷的季节);//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//3.私有化类的构造器private Season1(String seasonName,String seasonDesc){this.seasonName seasonName;this.seasonDesc seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}} Enum类 ①使用enum定义的枚举类默认其父类是java.lang.Enum类。所以不能再定义其他父类 ②Enum类中的常用方法 如果sout输出为对象名即默认为调用对象名.toString( )方法 String toString( ) : 默认返回的是常量名对象名可以继续手动重写该方法。 String name( ) : 默认返回当前枚举对象的名称当toString被重写了想获得枚举类对象的名称即用name( ) static 枚举类型[ ] values( ) : 返回枚举类型的对象数组。该方法可以很方便的遍历所有的枚举值为静态方法。 具体的使用如下结果为四个季节即四个对象名 Season1[] values Season1.values();
for (int i 0; i values.length; i){System.out.println(values[i]);
} static 枚举类型[ ] valueof( String name ) 返回当前枚举类对象名为name的枚举对象。如果枚举类中不存在名为name的对象则报错。 int ordinal( ) : 返回当前枚举常量的次序号默认从零开始。次序号即在枚举类中声明位置的排序 枚举类实现接口 情况①枚举类实现接口在枚举类中重写接口中的抽象方法。当通过不同的枚举类的对象调用此方法时执行的时是一个方法。 情况②枚举类实现接口在枚举类的每个对象中重写接口中的方法。操作在对象后面加上{}在{}里面重写接口中的方法即为在对象中重写接口中的方法。 具体操作如下 public class SeasonTest2
{}interface Info
{void show();
}
enum Season2 implements Info
{//1.创建对象必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。Spring(春天,花开的季节){public void show(){System.out.println(春);}},Summer(夏天,炎热的季节){public void show(){System.out.println(夏);}},Autumn(秋天,丰收的季节){public void show(){System.out.println(秋);}},Winter(冬天,寒冷的季节){public void show(){System.out.println(冬);}};//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//3.私有化类的构造器private Season2(String seasonName,String seasonDesc){this.seasonName seasonName;this.seasonDesc seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}Overridepublic String toString(){return Season2{ seasonName seasonName \ , seasonDesc seasonDesc \ };}
}