قدم إدخال سجلات Java للمطورين بنية بيانات جديدة تعمل على تبسيط التعامل مع كائنات البيانات وإنشائها. مع أحدث إضافة لأنماط السجلات والأنماط المتداخلة، أصبحت معالجة السجلات أكثر كفاءة وديناميكية.
لنبدأ بمراجعة الأساسيات - السجل هو بديل خفيف الوزن للفئات التقليدية التي تعمل بمثابة ناقل شفاف للبيانات باستخدام طرق الوصول المضمنة. والغرض الرئيسي منه هو الاحتفاظ بالبيانات بدلاً من تنفيذ السلوكيات المعقدة.
ومع ذلك، مع تقديم أنماط التسجيل في Java 21، تم تبسيط المصطلح التقليدي للمثيل والإلقاء. بدلاً من التحقق مما إذا كان الكائن عبارة عن مثيل لفئة تسجيل معينة ثم تحويله لاستخدام مكوناته، يمكننا الآن استخدام نمط سجل للجمع بين الخطوتين. على سبيل المثال، بدلاً من كتابة هذا:
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 إلى قيمة obj التي تم تحويلها إلى String.
] علاوة على ذلك، تقدم Java 21 أيضًا أنماطًا متداخلة، مما يسمح بمطابقة وتفكيك الرسوم البيانية للكائنات الأكثر تعقيدًا، مثل السجلات المتداخلة. لنفترض أن لدينا الإعلانات التالية:
Record BankAccount(String accountNumber, String accountHolder, double balance) {} Record Transaction(String transactionId, double amount, String type, String timestamp) {} Record BankStatement(Listtransactions, BankAccount account) {}
يمكننا الآن استخدام نمط سجل متداخل لحساب إجمالي مبلغ المعاملة من كائن BankStatement كما يلي:
static double calculateTotalTransactions(BankStatement statement) { if (statement instanceof BankStatement(Listtransactions, BankAccount account)) { double total = 0; for (Transaction t : transactions) { total = t.amount; } return total; } return 0; }
في هذا المثال، يحتوي النمط الخارجي BankStatement (قائمة المعاملات، حساب BankAccount) على نمط حساب BankAccount المتداخل الذي يتم استخدامه لاستخراج مكون الحساب من السجل 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. ومع ذلك، من المهم ملاحظة أنه عند استخدام أنماط السجلات في بيانات التبديل، يجب أن تكون كتلة التبديل شاملة. وهذا يعني أن جميع القيم الممكنة لتعبير المحدد يجب أن تؤخذ في الاعتبار في كتلة التبديل. بالنسبة لأنماط التسجيل، يتم تحديد ذلك من خلال تحليل أنواع الأنماط المستخدمة. على سبيل المثال، تسمية الحالة case Bar b سوف تتطابق مع قيم النوع Bar وجميع الأنواع الفرعية الممكنة من Bar.
في الختام، يعد فهم أنماط السجلات وإتقانها في Java 21 أمرًا بالغ الأهمية لأي شخص يستعد للحصول على شهادة مطور Java SE 21. تسمح هذه الميزات الجديدة بمعالجة السجلات بشكل أكثر بساطة وكفاءة، مما يجعلها مهارة أساسية لمطوري Java.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3