2017-04-03 58 views
-2

注:由几个人引用的解决方案在这里不适合我的问题工作...无法覆盖龙目岛的getter

我有我需要格式化为一个字符串中的java.sql.Timestamp场在我的吸气。我在课程开始时使用了Lombok @Data。但是当我用自己的getter重写Lombok的getter(来格式化时间戳)时,该字段总是空。我没有看到文档中的任何内容来解释这种行为。

的代码块给我settlementDate作为时间戳:

@Data 
public class MyObject { 
    public Timestamp settlementDate; 
} 

的代码块给我一个NPE,因为settlementDate为空。嗯,它发生在我身上......可能是因为getter的返回类型与成员类型不同?

@Data 
public class MyObject { 
    public Timestamp settlementDate; 

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

参见[如何创建一个最小的,完整的,并且可验证的示例](https://stackoverflow.com/help/mcve) –

+1

这个怎么样的答案? [http://stackoverflow.com/questions/18139678/lombok-how-to-customise-getter-for-boolean-object-field](http://stackoverflow.com/questions/18139678/lombok-how-to-定制拼命三郎换布尔对象场) – KiteUp

+0

我看到了这一点,但真的不知道把它应用到我...我会虽然尝试。 – user1660256

回答

1

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

  • 你的领域没有得到访问之前设置。
  • 确实如此,但会随null后覆盖。
  • 你访问它在不同的线程没有知名度的保证。

正如意见建议,你应该创建一个SSCCE。我通常会这样做,而且大多数情况下,我会取消我的问题,因为它会将我引向解决方案。


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

+0

谢谢。我用一个不同的名字创建了一个getter,现在它可以工作。 – user1660256

+0

@ user1660256这是很奇怪的....据我所知,只要你写你自己的getter,龙目岛跳过一代。 – maaartinus