Java 新特性之枚举,高级java工程师

本文详细介绍了如何在Java中创建和使用枚举类,包括两种定义枚举类的方式:传统类和`enum`关键字。枚举类可以拥有属性、构造器和方法,并能实现接口。枚举类的`toString()`方法返回枚举常量的名称,`values()`返回所有枚举值的数组,`valueOf()`根据名称获取枚举对象。此外,枚举类可以用于实现特定行为,如接口的统一或差异化实现。
摘要由CSDN通过智能技术生成
  1. 实例化当前枚举类的多个对象,并用public static final来修饰枚举类对象。

代码实现

public class SeasonTest {

public static void main(String[] args) {

Season spring = Season.SPRING;

System.out.println(spring);

}

}

//自定义枚举类

class Season{

//1.声明Season对象的属性:private final修饰

//final修饰的属性必须进行赋值,赋值方式有显式赋值、构造器赋值和代码块赋值

private final String seasonName;

private final String seasonDesc;

//2.私有化类的构造器,并给对象属性赋值

private Season(String seasonName,String seasonDesc){

this.seasonName = seasonName;

this.seasonDesc = seasonDesc;

}

//3.提供当前枚举类的多个对象:public 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(“冬天”,“冰天雪地”);

//4.其他诉求1:获取枚举类对象的属性

public String getSeasonName() {

return seasonName;

}

public String getSeasonDesc() {

return seasonDesc;

}

//4.其他诉求1:提供toString()

@Override

public String toString() {

return “Season{” +

“seasonName=’” + seasonName + ‘’’ +

“, seasonDesc=’” + seasonDesc + ‘’’ +

‘}’;

}

}

2.2 使用 enum 关键字定义枚举类


使用说明

  1. 必须在枚举类的第一行声明枚举类对象

  2. 使用 enum 定义的枚举类默认继承了java.lang.Enum 类,因此不能再继承其他类;

  3. 枚举类的构造器只能使用 private 权限修饰符

  4. 枚举类的所有实例必须在枚举类中显式列出,分隔; 结尾 ,系统会自动添加 public static final 修饰。

步骤

5. 实例化当前枚举类的对象,多个对象之间用 , 隔开,末尾对象 ; 结束;

6. 用private final来修饰声明枚举类对象的属性;

7. 私有化枚举类的构造器,并给枚举类对象属性赋值。

代码实现

public class SeasonTest {

public static void main(String[] args) {

Season spring = Season.SPRING;

System.out.println(spring);

}

}

/**

  • 自定义枚举类

*/

enum Season{

//1. 提供当前枚举类的对象,多个对象之间用",“隔开,末尾对象”;"结束

SPRING(“春天”,“春暖花开”),

SUMMER(“夏天”,“夏日炎炎”),

AUTUMN(“秋天”,“秋高气爽”),

WINTER(“冬天”,“冰天雪地”);

//2. 声明Season对象的属性:private final修饰

//final修饰的属性必须进行赋值,赋值方式有显式赋值、构造器赋值和代码块赋值

private final String seasonName;

private final String seasonDesc;

//3. 私有化类的构造器,并给对象属性赋值

private Season(String seasonName,String seasonDesc){

this.seasonName = seasonName;

this.seasonDesc = seasonDesc;

}

//4.其他诉求1:获取枚举类对象的属性

public String getSeasonName() {

return seasonName;

}

public String getSeasonDesc() {

return seasonDesc;

}

//4.其他诉求1:提供toString()

@Override

public String toString() {

return “Season{” +

“seasonName=’” + seasonName + ‘’’ +

“, seasonDesc=’” + seasonDesc + ‘’’ +

‘}’;

}

}

其中有一点要注意的是,实际上,enum 继承的是 Enum 类而非 Object 类,Object 类的 toString(); 方法返回的是地址,而 Enum 类的 toString(); 方法返回的是当前枚举常量的名称

3 Enum 类

===========================================================================

由于利用 enum 关键字修饰的类默认继承了 Enum 类,所以也可以使用父类的方法。

Enum 类的几个重要的方法与示例

1)toString():返回当前枚举类对象常量的名称

2)values():返回枚举类型的对象数组,该方法可以很方便地遍历所有的枚举值。

Season[] values = Season.values();

for (Season value : values) {

System.out.println(value);

}

3)valueOf(String str):可以把一个字符串转为对应的枚举类对象,要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常。

Season winter = Season.valueOf(“WINTER”);

System.out.println(winter);

4 实现枚举类的接口

=============================================================================

和普通 Java 类一样,枚举类可以实现一个或多个接口。

  • 若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可;

interface Info{

void show();

}

enum Season

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

1 implements Info{

…………

@Override

public void show() {

System.out.println(“这是一个季节”);

}

}

  • 若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式 ,则可以让每个枚举值分别来实现该方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值