SalesOrder
在我的项目中广泛使用。成员字段之一是
String orderType
。在处理过程中的各个阶段,我需要将订单类型的
Map
维护为
Integer
或者可能是
record
,以执行诸如跟踪在给定日期已处理的每种类型的订单数量等操作或者其他什么。所以,我有这样的变量
Map<String, Integer> orderTypeUnitCountMap = new HashMap<>();
我希望我的代码更具描述性,以明确映射中的键值应该是订单类型的意图。比如:
Map<OrderType, Integer> orderTypeUnitCountMap = new HashMap<>();
但是我没有 OrderType
类,因为我对订单类型唯一了解的是它的名称(即字符串中的值)。是否有一种简单、通用的方法来定义基本对象的集合,例如
String
或
Integer
,从而使意图/领域更清晰?我正在考虑/希望有一个最近推出的我还不熟悉的语言功能?
域模型的一部分。
在 Java 中,您可以将这些可能的销售订单类型表示为预定义的命名对象,并声明为enum。
enum SalesOrderType { CASH_SALES , RUSH_ORDER , SCHEDULING_AGREEMENT }
注意类名是单数的。请注意对象名称使用 ALL_CAPS,因为它们是不可变的常量。
然后您可以使用这些枚举对象作为Map
的键。您可能会使用
EnumMap
作为实现,因为它对于内存和 CPU 来说非常高效,并且是专门为枚举作为键而构建的。
Map < SalesOrderType , Integer > countOfSalesOrdersTodayByType = new EnumMap<>() ;
使用示例:
countOfSalesOrdersTodayByType.put( SalesOrderType.RUSH_ORDER , 7 ) ;