java为什么不用枚举_为什么枚举这么好用却不用的原因

Java中的枚举在序列化时不同于普通对象,仅输出其name属性。反序列化时通过`Enum.valueOf`根据名字查找枚举对象。由于序列化机制固定,枚举的`writeObject`等相关方法被忽略,不支持定制。枚举类型在系统升级或远程调用时需谨慎处理,避免删除原有枚举值,以免引发兼容性问题。
摘要由CSDN通过智能技术生成

在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同。下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的。

Java代码:

Java代码  bb1088024d5bd0ae051cbad3492f78aa.png

public enum FruitEnum {

APPLE, ORAGE

}

上面的代码定义了一个FruitEnum类型,是最简单形式的,下面我们来看看编译之后的字节码。

字节码:

Java代码  bb1088024d5bd0ae051cbad3492f78aa.png

public final class com.taobao.tianxiao.FruitEnum extends java.lang.Enum

....

....

....

{

public static final com.taobao.tianxiao.FruitEnum APPLE;

public static final com.taobao.tianxiao.FruitEnum ORAGE;

static {};

Code:

Stack=4, Locals=0, Args_size=0

0:   new #1; //class com/taobao/tianxiao/FruitEnum

3:   dup

4:   ldc #13; //String APPLE

6:   iconst_0

7:   invokespecial   #14; //Method "":(Ljava/lang/String;I)V

10:  putstatic   #18; //Field APPLE:Lcom/taobao/tianxiao/FruitEnum;

13:  new #1; //class com/taobao/tianxiao/FruitEnum

16:  dup

17:  ldc #20; //String ORAGE

19:  iconst_1

20:  invokespecial   #14; //Method "":(L

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值