我不是在寻找最好的方法来做到这一点,而是寻找任何方法来做我需要的事情,同时遵守 DRY 原则。
假设我有一个类 Source
如下。 Source
包含三十个字符串。
class Source {
private String sourceAttrOne = "sourceValueOne";
private String sourceAttrTwo = "sourceValueTwo";
...
private String sourceAttrThirty = "sourceValueThirty";
}
此信息将用于创建类 Destination
的新对象。 Destination
的 25 个属性具有类似格式的名称(但不是相同名称)。其中 10 个是字符串,5 个是日期,5 个是整数。然而,最后 5 个字段完全不同。
class Destination {
private String AttrOne;
...
private Date AttrSixteen;
...
private Integer AttrTwentyOne;
...
// Last 5 fields are different
private SomeOtherClass someOtherName;
private TheBestClass imAlsoSpecial;
// Standard getters and setters
}
对于 25 个“正常”属性,我需要使用辅助方法从源值获取结果。使用的辅助方法取决于目标类型:
destination.setAttrOne(getResultingString(source.getSourceAttrOne()));
destination.setAttrSixteen(getResultingDate(source.getSourceAttrSixteen());
destination.setAttrSeventeen(getResultingDate(source.getSourceAttrSeventeen()/*, custom Date format for AttrSeventeen */));
其余 5 个属性需要自定义(个人)逻辑。
任何正确方向的指示将不胜感激,我不需要完整的解决方案:)
最佳答案
N.B.:我可能完全错了,如果是这样的话请不要介意我。
我还没有解锁评论,虽然它更有可能是最好的;对于给您带来的不便,我们深表歉意。
如果第 1 到第 15 个属性是字符串,那么据推测,您可以简单地将它们影响到相应的属性,或者如果您愿意,可以先克隆它们。
对于 16 号到 21 号(?),这些日期,您可以使用 DateFormat's parse(String)方法;虽然,我对如何帮助编译器获取使用的格式或者它是否可以自行正确完成一无所知。
对于第 22 到 27(?),整数,你应该能够使用 Integer's parse(String)方法,或者可能通过 Double 的,然后转换回 Integer 或 int。
关于java - 如何将类字段映射到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524262/