【问题标题】:Dozer mapping is vs get推土机映射是 vs 得到
【发布时间】:2014-10-22 11:23:58
【问题描述】:

以下情况:

public class Race {
    private Status finished;

    public Status getFinished() {
        return finsihed;
    }

    public void setFinished(Status finished) {
        this.finsihed = finished;
    }

    public boolean isFinished() {
        return finished == Status.FINISHED;
    }
}

public class RaceDTO {
    private Status finished;

    public Status getFinished() {
        return finsihed;
    }

    public void setFinished(Status finished) {
        this.finsihed = finished;
    }
}

Dozer 正在使用 isFinished() 方法而不是 getFinished() 映射 RaceDTO 类。为什么会这样以及如何应对?我更喜欢使用注解。

【问题讨论】:

    标签: java javabeans dozer


    【解决方案1】:

    如果返回类型是布尔值,则使用“is”前缀而不是“get”

    【讨论】:

      【解决方案2】:

      isFinished 是表示布尔返回类型的常用方法。

      if ( race.isFinished() ) {} 
      

      if ( race.getFinished() ) {}
      

      第一个比较清楚

      【讨论】:

        【解决方案3】:

        根据JavaBens specification 的“8.3 属性设计模式”部分,布尔属性可能具有“is”访问方法。如果有,则此方法将优先于“get”(如果存在)。

        【讨论】:

          【解决方案4】:

          我找到了答案。我必须在一个字段上添加注释,然后两个方法都没有被调用

          public class Race {
              @Mapping("finished")
              private Status finished;
          
              public Status getFinished() {
                  return finsihed;
              }
          
              public void setFinished(Status finished) {
                  this.finsihed = finished;
              }
          
              public boolean isFinished() {
                  return finished == Status.FINISHED;
              }
          }
          

          【讨论】:

          • 嗯......这实际上并没有被问到。但我很高兴你设法解决了你的问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-22
          • 1970-01-01
          • 1970-01-01
          • 2017-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多