發表文章

目前顯示的是有「lombok」標籤的文章

Lombok `@ExtensionMethod` 讓 Java 程式碼優雅變身

  告別冗長的工具類呼叫:用 Lombok  @ExtensionMethod  讓 Java 程式碼優雅變身 身為 Java 開發者,我們都寫過或看過這樣的程式碼: String userInput = " hello world " ; if ( ! StringUtils . isBlank ( userInput ) ) { String processedText = StringUtils . capitalize ( userInput . trim ( ) ) ; System . out . println ( processedText ) ; } int value = NumberUtils . toInt ( someString , 0 ) ; // 失敗時返回預設值 0 這段程式碼完全沒問題,功能正常、邏輯清晰。 StringUtils  和  NumberUtils 。但你不禁會想:如果程式碼能讀起來更像自然語言,更符合物件導向的思維,那該有多好? 如果能像 C# 或 Kotlin 那樣,寫成這樣呢? // 理想中的程式碼 String userInput = " hello world " ; if ( ! userInput . isBlank ( ) ) { // String 本身就有 isBlank() String processedText = userInput . trim ( ) . capitalize ( ) ; // 如果能鏈式呼叫就更棒了! System . out . println ( processedText ) ; } int value = someString . toInt ( 0 ) ; 這就是「擴充方法」(Extension Methods) 的魅力所在。它允許我們在不修改原始類別的情況下,為其「添加」新方法。雖然 Java 語言本身不直接支援此功能,但我們有好朋友  Lombok !透過它的  @ExtensionMethod  註解,我們幾乎可以完美地實現這個夢想。 步驟 2:建立你的「擴充方法」容器 首先...

Java Record vs final field class 使用lombok 比較

  Java Record vs final field class 使用lombok 比較 java java17+ lombok 在我們常用不可修改DTO常用這種寫法(例如打包的參數) public static class FC1 { public final ZonedDateTime start ; public final String me ; public FC1 ( ZonedDateTime start , String me ) { this . start = start ; this . me = me ; } } 現在新版多了個簡易的寫法如下 public record R1 ( ZonedDateTime start , String me ) { } 新舊版本使用如下 public static void main ( String [ ] args ) { var fc1 = new FC1 ( ZonedDateTime . now ( ) , "sss" ) ; System . out . println ( "fc1 start=" + fc1 . start + " me=" + fc1 . me ) ; var r1 = new R1 ( ZonedDateTime . now ( ) , "sss" ) ; System . out . println ( "r1 start=" + r1 . start + " me=" + r1 . me ) ; } // fc1 start=2023-07-04T15:23:23.562880400+08:00[Asia/Taipei] me=sss // r1 start=2023-07-04T15:23:23.5...