java enum自定义序号_自定义枚举也是可序列化的吗?

我了解Enum是可序列化的。因此,这样做是安全的。(selectedCountry是enum Country)

没有客户成员变量的原始枚举

public enum Country {

Australia,

Austria,

UnitedState;

}

分段

@Override

public void onActivityCreated (Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

if (savedInstanceState != null) {

selectedCountry = (Country)savedInstanceState.getSerializable(SELECTED_COUNTRY_KEY);

}

}

@Override

public void onSaveInstanceState(Bundle savedInstanceState) {

savedInstanceState.putSerializable(SELECTED_COUNTRY_KEY, selectedCountry);

}

但是,如果我在自定义枚举类中有不可序列化的成员,该怎么办?例如,

原始枚举客户成员变量

package org.yccheok;

import org.yccheok.R;

/**

*

* @author yccheok

*/

public enum Country {

Australia(R.drawable.flag_au),

Austria(R.drawable.flag_at),

UnitedState(R.drawable.flag_us);

Country(int icon) {

this.icon = icon;

nonSerializableClass = new NonSerializableClass(this.toString());

}

public int getIcon() {

return icon;

}

public static class NonSerializableClass {

public NonSerializableClass(String dummy) { this.dummy = dummy; }

public String dummy;

}

private final int icon;

public NonSerializableClass nonSerializableClass;

}

我测试了 有用。(我通过在序列化之前和之后打印出所有成员变量的值进行了测试。它们在前后均相同)

但是,我不明白为什么会起作用?

由于我没有提供适当的readObject和writeObject,因此需要Serializable界面提供。

如有效Java 项目75:考虑使用自定义序列化表格所述

,如果我的枚举中有自定义成员变量,是否需要提供自己的readObject和writeObject?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值