java运行时添加枚举值_枚举-我可以在运行时在J中添加和删除枚举元素吗

我在年轻职业的形成性项目中就遇到了这个问题。

我采用的方法是在外部保存枚举的值和名称,最终目标是能够编写看起来尽可能接近语言枚举的代码。

我希望我的解决方案如下所示:

enum HatType

{

BASEBALL,

BRIMLESS,

INDIANA_JONES

}

HatType mine = HatType.BASEBALL;

// prints "BASEBALL"

System.out.println(mine.toString());

// prints true

System.out.println(mine.equals(HatType.BASEBALL));

我最终得到了这样的东西:

// in a file somewhere:

// 1 --> BASEBALL

// 2 --> BRIMLESS

// 3 --> INDIANA_JONES

HatDynamicEnum hats = HatEnumRepository.retrieve();

HatEnumValue mine = hats.valueOf("BASEBALL");

// prints "BASEBALL"

System.out.println(mine.toString());

// prints true

System.out.println(mine.equals(hats.valueOf("BASEBALL"));

由于我的要求是必须在运行时将成员添加到枚举,所以我还实现了该功能:

hats.addEnum("BATTING_PRACTICE");

HatEnumRepository.storeEnum(hats);

hats = HatEnumRepository.retrieve();

HatEnumValue justArrived = hats.valueOf("BATTING_PRACTICE");

// file now reads:

// 1 --> BASEBALL

// 2 --> BRIMLESS

// 3 --> INDIANA_JONES

// 4 --> BATTING_PRACTICE

我将其称为“动态枚举”模式,您了解了原始设计及其修订版。

两者之间的区别在于,修订版是在我真正开始使用OO和DDD之后才设计的。 当我仍然在名义上编写程序性DDD时,在时间压力下,我设计了第一个程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值