我正在使用 PayPal 的 SOAP API,它有一个名为 AddressType 的具体类。
https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_SOAP/
在我可以将我的运输信息传递给 PayPal 之前,我需要翻译我当前的地址类型的运输对象。
目前我在我的逻辑中这样做并不漂亮。
AddressType shippingAddress = new AddressType();
Address input = storedOrderDetails.getShippingDetails().getShippingAddress();
shippingAddress.setStreet1(input.getAddressLine1());
shippingAddress.setPostalCode(input.getPostCode());
shippingAddress.setCityName(input.getTown());
shippingAddress.setCountryName(input.getCountryName());
有没有更好的方法来做到这一点,我尝试了强制转换,但由于类属性和方法签名不匹配,所以这行不通。
欢迎提出任何建议。
最佳答案
您可以使用一些 bean 映射框架,例如 Orika或 Dozer .他们两个都很好,我已经用每个人完成了一些项目。实际上有 20 多个 bean 映射框架,但我没有全部尝试。
它们都开箱即用地自动映射源对象和目标对象的相似属性,但您可以在静态 mappings.xml 文件中或动态地使用编程 API 映射不同的属性。
它们可以做的不仅仅是简单的映射,例如将列表转换为 map 或将对象的层次结构展平为一个简单的对象等等。但我认为您现在的项目中不需要这些功能。
总的来说,使用或不使用这类框架各有利弊。和缺点。我可以告诉你,如果这些类型映射在你的代码中不常见,不要使用它们让你的项目变得复杂,像你一样手动完成它们。
祝你好运。
关于java - 将对象转换为具有相同数据的另一个对象? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35036454/