有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法重写Lombok getter

注意:这里有几个人引用的解决方案不适用于我的问题

我有一个java。sql。要在getter中格式化为字符串的时间戳字段。我在课程开始时使用Lombok@Data。但当我用自己的getter覆盖Lombok的getter(格式化时间戳)时,字段总是空的。我在文档中没有看到任何可以解释这种行为的东西

这段代码将结算日期作为时间戳提供给我:

@Data
public class MyObject {
  public Timestamp settlementDate;
}

这段代码给了我一个NPE,因为结算日期为空。我突然想到。。。可能是因为getter的返回类型与成员类型不同吗

@Data
public class MyObject {
  public Timestamp settlementDate;

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

共 (1) 个答案

  1. # 1 楼答案

    你的代码肯定有一些与龙目无关的问题。以下一些观点成立:

    • 您的字段在访问之前未设置
    • 确实如此,但稍后会被null覆盖
    • 您正在另一个线程上访问它,而没有可见性保证

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


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