Java 中更具描述性的 Collection<String>

问题描述 投票:0回答:1
假设我有一个类

SalesOrder

在我的项目中广泛使用。成员字段之一是 
String orderType

在处理过程中的各个阶段,我需要将订单类型的

Map

 维护为 
Integer
 或者可能是 
record
,以执行诸如跟踪在给定日期已处理的每种类型的订单数量等操作或者其他什么。

所以,我有这样的变量

Map<String, Integer> orderTypeUnitCountMap = new HashMap<>();
我希望我的代码更具描述性,以明确映射中的键值应该是订单类型的意图。比如:

Map<OrderType, Integer> orderTypeUnitCountMap = new HashMap<>();
但是我没有 

OrderType

 类,因为我对订单类型唯一了解的是它的名称(即字符串中的值)。

是否有一种简单、通用的方法来定义基本对象的集合,例如

String

Integer
 ,从而使意图/领域更清晰?我正在考虑/希望有一个最近推出的我还不熟悉的语言功能?

java generics collections
1个回答
0
投票
在设计应用程序时,您应该弄清楚销售订单的类型到底是什么。这些值是您的

域模型的一部分。

在 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 ) ;
    
© www.soinside.com 2019 - 2024. All rights reserved.