Arrays全名是java.util.Arrays,是自Java 1.2就有的API。而List(java.util.List)雖然也是Java 1.2就開始有的API,其中的List.of()卻是Java 9才新增的方法。Arrays.asList()與List.of()兩種都是快速建立List物件的方法,但使用上有不太一樣的地方。本文講解兩種List物件的差異,以及為什麼會有這兩種方式產生串列。
Java的Arrays.asList()與List.of()差別
解決HTTP Header Content-Disposition檔案名稱不能輸入中文、日文、韓文等Unicode字元
問題 有時候我們會透過網頁後端程式直接輸出檔案,因此需要在HTTP Response Header裡面添加Content […]
Java 8的日期時間API介紹與各種常見操作範例
在Java 8推出新的日期與時間API之前可能會使用Long型態直接紀錄Unix Timestamp,或是使用java.util.Date來紀錄一個日期時間。從Java 8開始推出更方便的java.time系列API,可以只記錄日期、只記錄時間、紀錄一段時間長度、處理各種時區問題。本文章將介紹這些好用的API,以及提供各種操作範例。
Spring Data JPA與Hibernate報錯failed to lazily initialize a collection
在Java使用Spring或是Hibernate時,使用OneToMany、ManyToMany來標注Entity Class非常方便,可以輕鬆處理外來鍵與外來資料表的問題。但偶爾使用getXXX()方法要讀取外來資料表的時候,可能會遇到Hibernate報錯說「org.hibernate.LazyInitializationException: failed to lazily initialize a collection」,本篇文章將解析為什麼會發生這種問題,以及要怎麼解決它。
使用Java擷取檔案副檔名、判斷檔案類型(不用第三方套件)
本篇教學文章示範如何使用Java不透過第三方套件來判斷檔案的副檔名,以及檔案類型,只需要Java 7的NIO就可以達成,再加上Java 8的Optional與Stream API來更優雅的處理。使用原生的API可以避免一些問題,例如執行時還需要第三方套件、第三方套件還包含太多用不上的API徒增檔案大小、第三方套件不更新可能有漏洞等麻煩。
Java 17新增的sealed、non-sealed class與final class差別
一個Java Class的可用性有四種狀態,分別是public、protected、(無標示)、private,但可否被繼承的設定卻只有無標示與final兩種。從Java 17開正式推出sealed class / interface,有些人將sealed翻譯為彌封類別,或是密封類。sealed是用來限制類別繼承與介面實作做的對象,解決「都可以繼承,要不就是都不能繼承的問題。
Java 16新增的record教學,與lombok和POJO的比較
從Java 16開始新增一種全新的類別叫Record,專門用來儲存資料,本文章教學如何在Java 16中使用Record,Lombok Builder的好用之處,以及Record跟傳統的POJO Class與Lombok的差別。
使用Spring Data JPA建立公版的DAO、Repository樣板
Spring Data JPA是一個非常方便的資料庫Connection與Mapping的框架,它可以幫你建立資料表、添加資料表的欄位、維護連接池、將Java物件轉換為Table資料。有時候我們會希望自己建立一個我們的公版interface,讓他繼承某一個Repository再添加一些方法,然後之後的DAO interface再繼承我們的公版interface,可以簡化更多程式碼。
使用Java與JavaScript在前後端檢查密碼強度
跟帳號有關的系統,不管是網頁、手機App、或是單機桌面應用程式都可能遇上密碼,有些簡單點的會限制使用者的密碼文字長度要多長,複雜一點的還會限制密碼至少要包含某些內容,已達到足夠的複雜強度。本文提供Java、JavaScript與TypeScript的範例,提供檢測密碼是否符合強度的程式碼。
從Java 7、17到Java 20,歷代Java Switch關鍵字的進化
Java語言從1995年發表至今2022年已經27個年頭,有些舊專案可能還停留在Java 6,比較近代一點的也可能停留在Java 8或Java 11這兩個LTS版。這些年間光是switch關鍵字的功能就進化許多次,像是加入的了Switch陳述句(Switch Expressions)、箭頭回傳值、多重數值的case(Multi-Constant Case)、新的關鍵字yield等,本文將介紹switch多了哪些方便好用的新功能。