」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Java SE 開發人員認證準備的 Java Record 考試目標

Java SE 開發人員認證準備的 Java Record 考試目標

發佈於2024-11-04
瀏覽:486

Java Records Exam Objective for Java SE Developer Certification Preparation

Java記錄的引入為開發人員提供了一種新的資料結構,簡化了資料物件的處理和建立。透過最新新增的記錄模式和巢狀模式,記錄處理變得更有效率和動態。

讓我們先回顧一下基礎知識 - 記錄是傳統類別的輕量級替代品,它充當具有內建存取器方法的資料的透明載體。它的主要目的是保存資料而不是實現複雜的行為。

然而,隨著Java 21中記錄模式的引入,傳統的instanceof-and-cast習慣用法已經被簡化。我們現在可以使用記錄模式來組合這兩個步驟,而不是檢查物件是否是特定記錄類別的實例,然後將其轉換為使用其元件。例如,不要這樣寫:

if (obj instanceof String) {
    String name = (String)obj;
    ... use name ...
}
In Java 21, we can simply write:

if (obj instanceof String name) {
    ... use name ...
}

這使得程式碼更加簡潔且不易出錯,因為類型模式 String s 用於與 obj 的值進行匹配,並將模式變數 s 初始化為已轉換為 String 的 obj 的值。

此外,Java 21還引入了嵌套模式,它允許匹配和分解更複雜的物件圖,例如嵌套記錄。假設我們有以下聲明:

Record BankAccount(String accountNumber, String accountHolder, double balance) {}
Record Transaction(String transactionId, double amount, String type, String timestamp) {}
Record BankStatement(List transactions, BankAccount account) {}

我們現在可以使用嵌套記錄模式來計算 BankStatement 物件的總交易金額,如下所示:

static double calculateTotalTransactions(BankStatement statement) {
    if (statement instanceof BankStatement(List transactions, BankAccount account)) {
        double total = 0;
        for (Transaction t : transactions) {
            total  = t.amount;
        }
        return total;
    }
    return 0;
}

在此範例中,外部模式 BankStatement(List transactions, BankAccount account) 包含一個巢狀模式 BankAccount account,用於從記錄 BankStatement 中擷取帳戶元件。這允許更簡潔和高效的程式碼,因為我們不必單獨處理每個單獨的子模式匹配。

記錄模式的另一個有用的功能是類型推斷。當記錄模式命名通用記錄類別而不提供任何類型參數時,編譯器將在使用該模式時自動推斷類型參數。這簡化了程式碼,如下例所示:

record MyBankAccount(L limitFactor, M money){};

static void recordInference(MyBankAccount bankaccount){
    switch(bankaccount){
        case MyBankAccount(var moneylimit, var amount) ->
            System.out.println("Messages: Inferred that account has balance "   amount   " with a limit of "   moneylimit);
        case MyBankAccount(var moneylimit, null)->
            System.out.println("Messages: Inferred that account has a balance of zero with a limit of "   moneylimit);
        ...
    }
}

嵌套記錄模式也支援此功能,使程式碼更加簡潔和可讀。

最後,記錄模式與 Java 21 中的 switch 表達式和語句完全整合。但是,需要注意的是,在 switch 語句中使用記錄模式時,switch 區塊必須是詳盡的。這意味著必須在 switch 區塊中考慮選擇器表達式的所有可能值。對於記錄模式,這是透過分析所使用的模式的類型來確定的。例如,case 標籤 case Bar b 將符合 Bar 類型的值以及 Bar 的所有可能的子類型。

總之,理解和掌握 Java 21 中的記錄模式對於任何準備 Java SE 21 開發人員認證的人來說都是至關重要的。這些新功能允許更加簡化和高效的記錄處理,使其成為 Java 開發人員的基本技能。

版本聲明 本文轉載於:https://dev.to/myexamcloud/java-21-records-exam-objective-for-java-se-21-developer-certification-preparation-1bb9?1如有侵犯,請聯絡study_golang@163 .com刪除
最新教學 更多>
  • 用戶本地時間格式及時區偏移顯示指南
    用戶本地時間格式及時區偏移顯示指南
    在用戶的語言環境格式中顯示日期/時間,並使用時間偏移在向最終用戶展示日期和時間時,以其localzone and格式顯示它們至關重要。這確保了不同地理位置的清晰度和無縫用戶體驗。以下是使用JavaScript實現此目的的方法。 方法:推薦方法是處理客戶端的Javascript中的日期/時間格式化和...
    程式設計 發佈於2025-05-22
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-05-22
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 in position 2-3: truncated \UXXXXXXXX escapeThi...
    程式設計 發佈於2025-05-22
  • 反射動態實現Go接口用於RPC方法探索
    反射動態實現Go接口用於RPC方法探索
    在GO 使用反射來實現定義RPC式方法的界面。例如,考慮一個接口,例如:鍵入myService接口{ 登錄(用戶名,密碼字符串)(sessionId int,錯誤錯誤) helloworld(sessionid int)(hi String,錯誤錯誤) } 替代方案而不是依靠反射...
    程式設計 發佈於2025-05-22
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-05-22
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-05-22
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-05-22
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-05-22
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-05-22
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-05-22
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-05-22
  • 如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    程式設計 發佈於2025-05-22
  • 切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    無法連接到mySQL數據庫:故障排除錯誤消息要調試問題,建議將以下代碼添加到文件的末尾.//config/database.php並查看輸出: ... ... 迴聲'... echo '<pre>'; print_r($db['default']); echo '</pr...
    程式設計 發佈於2025-05-22
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-05-22
  • 如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解決方案:的,請訪問量很大,並應為procectiquiestate的,並在整個代碼上正確格式不多: java.text.simpledateformat; 導入java.util.calendar; 導入java...
    程式設計 發佈於2025-05-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3