【发布时间】:2015-05-06 13:22:09
【问题描述】:
我确信这是一个相当简单的问题,但对于如何优雅地解决它我束手无策(case 语句听起来不像是最具可扩展性的选项)。
我必须转换和填充一种类型的地址数据,并将其打包用于不同类型的 Web 服务。不幸的是,类型不对齐,我将不得不以某种方式映射两者。
例如,我有 AddressData,其中包含 String AddressLine1、String State 等...另一个需要填充的类 Address 期望特定的“StateProviceCode”而不是状态字符串。如何将String 映射到特定的StateProviceCode,这样我就可以运行映射并注入正确的状态代码?
如果这没有太大意义,我正在尝试执行以下操作:
Address billingAddress = new Address(); //to be populated
AddressData billingAddressData = updateStoredCardRequest.getPaymentInfo().getBillingAddress();
billingAddress.setAddressLine1(billingAddressData.getLine1()); //String->String
billingAddress.setCity(billingAddressData.getTown()); //String->String
billingAddress.setPostalCode(billingAddressData.getPostalCode()); //String->String
//based on the isocode of the billingAddressData.region, set the stateProviceCode of the billingAddress.
if(billingAddressData.getRegion().getIsocodeShort() == "US-IL"){
billingAddress.setStateProvinceCode(StateProvinceCode.Illinois);
}
任何有关执行此实现的方法的帮助都会很棒。非常感谢。
【问题讨论】:
-
有什么原因不能使用
Map<String, StateProvinceCode>? -
另外,使用 equals() 方法比较字符串值。 @见stackoverflow.com/questions/513832/…
-
@KevinKrumwiede - 我可以,但我的问题是如何使用预先填充的地图?我如何/在哪里可以声明而不是在地图中单独设置状态。我希望这是有道理的。
-
要填充地图,请检查 SnakeYaml。 Spring 有一些框架支持,它是一种在启动时迭代静态数据的简单方法。
标签: java spring dictionary populate