我正在编写一些代码,其中有大量的常量需要定义。它主要处理Marketplace
常量(可以是美国、英国、印度、日本)和关联的MarketplaceMerchantMapping
,它基本上将MerchantID
映射到MarketplaceID
。
例如:
public enum Marketplace {
US("US"),
JP("JP"),
UK("UK"),
IN("IN"),
NZ("NZ"),
CA("CA"),
FR("FR"),
...
...
// This could go up to some 400 marketplaces
private final String stringValue;
public boolean isWest() {
return this == US || this == CA || this == UK;
}
public boolean isEast() {
return this == IN || this == NZ || this == JP;
}
}
public enum MarketplaceMerchantMapping {
USMAP(MarketplaceID.US, MerchantID.US, Marketplace.US),
JPMAP(MarketplaceID.JP, MerchantID.JP, Marketplace.JP),
UKMAP(MarketplaceID.UK, MerchantID.UK, Marketplace.UK),
NZMAP(MarketplaceID.NZ, MerchantID.NZ, Marketplace.NZ),
INMAP(MarketplaceID.IN, MerchantID.IN, Marketplace.IN),
CAMAP(MarketplaceID.CA, MerchantID.CA, Marketplace.CA),
FRMAP(MarketplaceID.FR, MerchantID.FR, Marketplace.FR),
...
...
// THis can go up to 400 Marketplaces * Number of merchantIds in each marketplace.
}
还有其他类似的常量,类似地定义为枚举或静态常量。
这确实是不可伸缩的,因为每次我们添加对新的Marketplace和Merchants的支持时,我们都需要更新一大堆文件并对其进行测试,而这些配置更改本身就占用了大量的开发人员时间。
理想情况下,我想知道是否有一些方法可以在一些配置文件中定义这些常量,并读取这些文件来创建常量。有没有办法通过读取和解析一些配置文件来创建这样的枚举常量?
因此,如果我有一个包含以下条目的配置文件:
ConfigFile.cfg:
WestMarketplaces = ("US", "AG", "MX", "CA", ...) // Expand this later as required
EastMarketplaces = ("IN", "AU", "SG", "JP", ...) // Expand this later as required
EUMarketplaces = ("UK", "FR", "SP", ...) // Expand this later as required
WestMerchantIds = ("WA", "WB", "WC", "WD", ...) // Expand this later as required
WestMerchantIds = ("EA", "EB", "EC", "WD", ...) // Expand this later as required
EUMerchantIds = ("EUA", "EUB", "EUC", "WDD", ...) // Expand this later as required
marketplaceMerchantMapping = {
"US" = "WA";
"CA" = "WB";
"MX" = "WC";
"AU" = "EA";
"IN" = "EB";
"JP" = "EC";
"UK" = "EUA";
"FR" = "EUB";
...
} // Expand this later as required
那么,它可以从配置文件中读取这些常量并构建适当的枚举或静态常量吗?
这有可能做到吗?
https://stackoverflow.com/questions/56645234
复制相似问题