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