无法覆盖Lombok getter

时间:2017-04-03 12:21:20

标签: java lombok

注意:这里有几个人引用的解决方案对我的问题不起作用......

我有一个java.sql.Timestamp字段,我想在我的getter中格式化为String。我在课程开始时使用了Lombok @Data。但是当我用自己的getter覆盖Lombok的getter(格式化Timestamp)时,该字段始终为null。我没有在文档中看到任何解释此行为的内容。

这段代码给出了resolveDate作为时间戳:

@Data
public class MyObject {
  public Timestamp settlementDate;
}

这段代码给了我一个NPE,因为settlementDate为null。嗯,它刚刚发生在我身上......难道是因为getter的返回类型与成员类型不同?

@Data
public class MyObject {
  public Timestamp settlementDate;

  String getSettlementDate() {
    return new SimpleDateFormat("yyyy-MM-dd").format(tradeDate);
  }
}

1 个答案:

答案 0 :(得分:1)

你的代码确实存在一些与Lombok无关的问题。以下部分内容如下:

  • 您的字段在访问之前未设置。
  • 确实如此,但稍后会被null覆盖。
  • 您在没有可见性保证的情况下在不同的线程上访问它。

根据评论中的建议,您应该创建一个SSCCE。我经常这样做,大多数时候,我取消了我的问题,因为它引导我找到解决方案。

请注意,写一个getter返回一个无法使用setter的类型是一个非常糟糕的主意。