1. يدعم التبديل السلسلة كمعلمات
/*** * يدعم التبديل معلمات السلسلة JDK7 * Author huangjiawei */switchtest الفئة العامة {public static void switchtest (string arg) {switch (arg) {case "lisa": system.err.println ("i am lisa!") ؛ استراحة؛ حالة "Mike": System.err.println ("أنا مايك!") ؛ استراحة؛ الافتراضي: system.err.println ("أنا فقط الخاص بك!") ؛ استراحة؛ }} public static void main (string [] args) {switchtest ("lisa") ؛ // i am lisa! SwitchTest ("Mike") ؛ // أنا مايك! SwitchTest ("") ؛ // أنا فقط! }}تبديل دعم التعداد
/** * تعداد التبديل يدعم JDK5 * Author huangjiawei * */الفئة العامة switchmonthtest {public static void swithmonthtest (month month) {switch (month) {case January: system.err.println ("هذا هو يناير") ؛ استراحة؛ حالة فبراير: system.err.println ("هذا هو فبراير") ؛ استراحة؛ مسيرة: System.Err.println ("هذا هو مارس") ؛ استراحة؛ })2. تحسين الحرفية الرقمية
2.1. قبل Java7 ، يدعم العشري (1234) ، أوكتال (01234) ، و Quexadecimal (0x1234)
Java 8 يدعم ثنائي (0B11110001)
2.2. يمكن فصلها عن طريق السفرة _
الطبقة العامة BinaryTest {private static int a = 16 ؛ // static static private int b = 020 ؛ // Octal private static int c = 0x10 ؛ System.Err.Println (B) ؛ // 16 System.err.println (C) ؛ // 16 System.Err.Println (D) ؛ // 16}}3. يتم إغلاق الموارد تلقائيًا
في Java ، هناك العديد من الموارد التي تحتاج إلى إغلاقها بعد استخدامها. خذ كستناء ، إدخال ، كاتب ، مآخذ ، اتصال ، وما إلى ذلك قبل Java 7 ، وعادة ما يعرض طريقة Close (). في Java 7 ، يمكنك تجاهل ما إذا لم يتم إغلاقه. يمكننا استخدام كتلة كود المحاولة مع الموارد.
استيراد java.io.bufferedReader ؛ استيراد java.io.filereader ؛ فئة عامة trytest { /*** اقبل المسار إلى ملف قبل Java 7* / Static String Trytest (مسار السلسلة) {bufferedReader Br = null ؛ Try {br = new BufferedReader (New FileReader (path)) ؛ إرجاع br.readline () ؛ } catch (استثناء e) {system.err.println ("استثناء bufferedReader" + e) ؛ } أخيرًا {if (br! = null) {try {br.close () ؛ Br.Ready () ؛ // تم إغلاق الدفق ، يتم إلقاء استثناء هنا} catch (استثناء e) {system.err.println ("BufferedReader Close Exception" + e) ؛ } } } يعود ""؛ } / * * المسار لقبول ملف java7 * /السلسلة الثابتة العامة trytest1 (مسار السلسلة) { / * * عند تشغيل كتلة TRAW ، سيتم إغلاق FileInputStream تلقائيًا. وذلك لأن FileInputStream تنفذ واجهة java.lang.autoclosable في Java. * يمكن استخدام جميع الفئات التي تنفذ هذه الواجهة في بنية المحاولة مع الموارد. */ try (BufferedReader BR = New BufferEdReader (New FileReader (path))) {return br.readline () ؛ } catch (استثناء e) {system.err.println ("استثناء bufferedReader" + e) ؛ } يعود ""؛ } الفراغ الثابت العام (سلسلة [] args) {trytest ("c: //users//huangjiawei//desktop//my-release-key.keystore") ؛ Trytest1 ("C: //users//huangjiawei//desktop//my-release-key.keystore") ؛ }}4. التقاط استثناءات متعددة
قبل Java 7 ، يجب تضمين جمل الصيد المتعددة لالتقاط استثناءات متعددة. في Java 7 ، يمكننا الكتابة بهذه الطريقة:
استيراد java.util.date ؛/*** سوف تنفذ عبارات الصيد المتعددة فقط أول استثناء من الصيد الذي يتطابق. بغض النظر عن عدد المصيد الموجود ، سيتم تجاهلها * Author Huangjiawei * */Class CatchTest {/ * * قبل Java 7 */public static void catchtest () {int a = 100 ؛ int b = 0 ؛ تاريخ التاريخ = فارغ ؛ جرب {system.err.println (date.gettime ()) ؛ // يتم طرح الاستثناء هنا ، ولن يتم تنفيذ البيان التالي! int النتيجة = a/b ؛ // system.err.println (result) ؛ // لم يتم تنفيذها} catch (nullpointerxception e) {system.err.println (e) ؛ // java.lang.nullpointerxception} catch (ArithMeticexception e) {system.err.println (e) ؛ } catch (استثناء e) {system.err.println (e) ؛ }} / * * java 7 * / public static void catchtest1 () {int a = 100 ؛ int b = 0 ؛ تاريخ التاريخ = فارغ ؛ حاول {int result = a/b ؛ System.err.println (نتيجة) ؛ System.err.println (date.getTime ()) ؛ } catch (ArithMeticexception | nullpointerxception e) {system.err.println (e) ؛ // java.lang.arithMeticexception:/by Zero}} main public static void (string [] args) {catchtest () ؛ catchtest1 () ؛ }}5. استنتاج نوع إنشاء مثيل
استيراد java.util.arraylist ؛ استيراد java.util.list ؛ الطبقة العامة typetest { /** قبل وبعد Java 7 ، يجب الإعلان عن كلا النوعين* / list <string> list = new ArrayList <String> () ؛ /** Java 7 ، بعد <> لا تحتاج إلى إعلان النوع ، وسيتم استنتاج نوعه تلقائيًا بناءً على <>*/ LIST <String> list1 = new ArrayList <> () ؛}6. نظام الملفات المحسّن
أطلقت JAVA7 واجهة برمجة تطبيقات NIO2.0 جديدة لتغيير الإزعاج مع إدارة الملفات ، بحيث يمكن استخدام أنواع شائعة الاستخدام مثل المسارات والمسارات والملفات والساعات ونظام الملفات والمنتجات الأخرى تحت java.nio.file أن تبسيط عمل ترميز المطورين بشكل كبير على إدارة الملفات.
6.1 واجهة المسار والمسارات فئة
يمكن أن تكون بعض وظائف واجهة المسار مكافئة بالفعل لفئة الملفات ضمن حزمة Java.io. بالطبع ، تقتصر هذه الوظائف على عمليات القراءة فقط. في التطوير الفعلي ، يمكن للمطورين استخدام واجهة المسار وفئة المسارات للحصول على سلسلة من معلومات السياق للملف.
استخدم واجهة المسار ونوع المسارات للحصول على معلومات الملف:
استيراد java.nio.file.path ؛ استيراد java.nio.file.paths ؛ الفئة العامة pathpathstest {public static void main (string [] args) {path path = paths.get ( System.out.println ("عدد عقد الملفات:" + path.getnamecount ()) ؛ // عدد عقد الملفات: 4 system.out.println ("اسم الملف:" + path.getFilename ()) ؛ // اسم الملف: my-release-key.keystore system.out.println ("دليل جذر الملف:" + path.getroot ()) ؛ // File Root Directory: C: /system.out.println ("File Superior Association دليل:" + path.getParent ()) ؛ // File Superior Association دليل: C:/المستخدمين/Huangjiawei/Desktop}}6.2. فئة الملفات
يمكن باستخدام واجهة المسار وفئة المسارات الوصول بسهولة إلى معلومات السياق الخاصة بالملف الهدف. بالطبع ، هذه العمليات كلها قراءة فقط. إذا أراد المطورون إجراء عمليات أخرى غير قراء فقط على الملفات ، مثل إنشاء ، تعديل ، حذف ، وما إلى ذلك ، فيمكنهم استخدام نوع الملفات للعمل.
الطرق الشائعة لنوع الملفات هي كما يلي:
مثال على نسخ الملفات ولصقها باستخدام نوع الملفات:
files.copy (paths.get ("/test/src.xml") ، paths.get ("/test/target.xml")) ؛يعد استخدام نوع الملفات لإدارة الملفات أكثر ملاءمة وبسيطة من أساليب الإدخال/الإخراج التقليدية. نظرًا لأن تنفيذ التشغيل المحدد سيتم تسليمه إلى واجهة برمجة تطبيقات NIO2.0 ، فإن المطورين لا يحتاجون إلى الانتباه.
6.3. مراقبة
يوفر Java7 أيضًا للمطورين مجموعة جديدة من وظائف نظام الملفات ، وهي مراقبة الملفات. قد يكون هناك العديد من الأصدقاء هنا لا يعرفون أهمية مراقبة الملف والغرض منها. لذا يرجى استدعاء حاوية الويب التي تم تصحيحها في وظيفة الإصدار الساخن. عندما يتم تكرار المشروع وإعادة نشره ، لا يحتاج المطورون إلى إعادة تشغيله يدويًا لأنه بمجرد أن تكتشف حاوية الويب أن الملف يتغير ، فإنه سيتكيف تلقائيًا مع هذه "التغييرات" وإعادة التحميل داخليًا. تعتمد وظيفة النشر الساخنة لحاويات الويب أيضًا على وظيفة مراقبة الملفات ، لذلك يجب الاعتراف بأن ظهور وظيفة مراقبة الملفات له أهمية كبيرة لنظام ملفات Java.
تعتمد مراقبة الملفات على الحدث ، كما أن تشغيل الحدث هو شرط أساسي للمراقبة. يمكن للمطورين استخدام الثوابت الحرفية الثلاثة التي يوفرها نوع StandardWatcheventKinds ضمن حزمة Java.nio.file لتحديد أنواع الأحداث المراقبة. تجدر الإشارة إلى أن أحداث المراقبة يجب أن تكون مسجلة في مثيل WatchService.
مراقبة الأحداث التي يوفرها نوع StandardWatcheventKinds:
مثال كامل على تنفيذ مراقبة الملفات باستخدام فئة WatchService:
استيراد java.nio.file.filesystems ؛ استيراد java.nio.file.path نظام مراقبة الملفات* Author Huangjiawei*/فئة عامة WatchViewTest {public static void testwatch () {/* monitor target path*/path path = paths.get ("c: // users // huangjiawei // desktop") ؛ حاول { /* إنشاء كائن مراقبة الملف. */ WatchService WatchService = filesystems.getDefault (). NewWatchService () ؛ /* تسجيل جميع أنواع الأحداث لمراقبة الملفات. */ path.register (WatchService ، StandardWatcheventKinds.entry_create ، standardwatcheventkinds.entry_delete ، standardwatcheventkinds.entry_modify) ؛ /* ملف مراقبة الحلقة. */ بينما (صحيح) {WatchKey WatchKey = WatchService.take () ؛ /* تكرار عبر جميع الملفات التي تثير الحدث*/ لـ (WatchEvent <؟> الحدث: WatchKey.pollevents ()) {system.out.println (event.context (). toString () + "نوع الحدث:" + event.kind ()) ؛ } if (! watchkey.reset ()) {return ؛ }}} catch (استثناء e) {E.PrintStackTrace () ؛ }} public static void main (string [] args) {testWatch () ؛ }} من خلال أمثلة البرنامج أعلاه ، يمكننا أن نرى أن استخدام واجهة WatchService لمراقبة الملفات بسيطة للغاية ومريحة للغاية. أولاً ، نحتاج إلى تحديد مسار المراقبة المستهدف ، ثم الاتصال بطريقة NewWatchService () لنوع الأنظمة لإنشاء كائن WatchService. بعد ذلك ، نحتاج إلى استخدام طريقة التسجيل () لواجهة المسار لتسجيل مثيل WatchService ومراقبة الأحداث. عندما تكون كل هذه الطبقات الأساسية جاهزة ، نكتب دورة مراقبة في الوقت الفعلي المحيطية. أخيرًا ، قم بتكرار مفتاح WatchKey للحصول على جميع الملفات التي تؤدي إلى أحداث مراقبة.
الآن أعرف أخيرًا المبدأ الأساسي لما يسمى التحديث الساخن Dev-Tools في Spring Boot! اتضح أن JDK يوفر واجهات برمجة التطبيقات هذه.
لخص
ما ورد أعلاه هو تحليل الكود لـ JDK 7 ميزات جديدة موجزة من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!