java - 如何将类字段映射到另一个类?

标签 java

我不是在寻找最好的方法来做到这一点,而是寻找任何方法来做我需要的事情,同时遵守 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/

相关文章:

java - 如果 JVM 在进行 GC 时不断移动对象,它如何解析引用?

java - 如何在 Spring 的 web.xml 中获取配置文件特定的 pom 属性?

java - 如何查看流中的中间结果?

java - for each 里面一个 for each - Java

java - 将对象从 View 传递到 Controller 或从 Controller 传递到 Controller

java - android java String.format 在 double 上小数点之前和之后填充零

java - 使用 fastJSON 反序列化零件数据失败

java - 类型参数 'S' 的推断类型 'S' 不在其范围内;应该扩展 'com.example.srilanka.model.Employee'

java - 如何接收非实体类作为 POST 方法的参数?

java - 在访问 JNI 接口(interface)时,为什么 C 需要额外的间接级别而 C++ 不需要?