1. Switch mendukung string sebagai parameter
/*** * Switch mendukung parameter string jdk7 * @author huangjiawei */kelas publik switchtest {public static void switchtest (string arg) {switch (arg) {case "lisa": system.err.println ("I Am Lisa!"); merusak; case "mike": system.err.println ("I Am Mike!"); merusak; default: system.err.println ("Aku satu -satunya!"); merusak; }} public static void main (string [] args) {switchtest ("lisa"); // i am lisa! switchtest ("mike"); // saya mike! switchtest (""); // Aku satu -satunya milikmu! }}Beralih Dukungan Pencacahan
/** * Switch Enumeration mendukung jdk5 * @author huangjiawei * */kelas publik switchmontest {public static void swithmontest (bulan bulan) {switch (bulan) {case Januari: system.err.println ("Ini Januari"); merusak; Kasus Februari: System.err.println ("Ini Februari"); merusak; Case March: System.err.println ("This Is March"); merusak; }} public static void main (string [] args) {swithmonthtest (bulan.january); // Ini adalah Januari Swithmonttest (bulan.february); // Ini adalah Februari Swithmontest (bulan.march); // Ini Maret}}2. Peningkatan literal numerik
2.1. Sebelum java7, mendukung desimal (1234), octal (01234), dan hexadecimal (0x1234)
Java 8 mendukung biner (0B11110001)
2.2. Dapat dipisahkan dengan underscore_
Kelas Publik BinaryTest {private static int a = 16; // desimal private static int b = 020; // oktal private static int c = 0x10; // hexadecimal private static int d = 0b0001_0000; // biner, gunakan pembatas untuk memisahkan void statis publik (string [] {arg. System.err.println (b); // 16 system.err.println (c); // 16 System.err.println (d); // 16}}3. Sumber daya ditutup secara otomatis
Di Java, ada banyak sumber daya yang perlu ditutup setelah digunakan. Ambil chestnut, inputstream, penulis, soket, koneksi, dll. Sebelum java 7, biasanya menampilkan metode tutup (). Di Java 7, Anda dapat mengabaikan apakah itu tidak ditutup. Kita dapat menggunakan blok kode cobalah-dengan-sumber daya.
Impor java.io.bufferedReader; import java.io.filereader; kelas publik trytest { /** Terima path ke file sebelum java 7* / public static string trytest (string path) {bufferedReader br = null; coba {br = BufferedReader baru (filereader baru (path)); return br.readline (); } catch (Exception e) {System.err.println ("BufferedReader Exception" + e); } akhirnya {if (br! = null) {coba {br.close (); br.ready (); // stream telah ditutup, pengecualian dilemparkan ke sini} catch (pengecualian e) {system.err.println ("BufferedReader tutup pengecualian" + e); } } } kembali ""; } / * * Path untuk menerima file java7 * /public static string trytest1 (string path) { / * * Ketika blok pernyataan coba berjalan, FileInputStream akan ditutup secara otomatis. Ini karena FileInputStream mengimplementasikan antarmuka java.lang.autoclosable di Java. * Semua kelas yang mengimplementasikan antarmuka ini dapat digunakan dalam struktur percobaan-dengan-sumber daya. */ coba (bufferedReader br = new bufferedReader (filereader baru (path))) {return br.readline (); } catch (Exception e) {System.err.println ("BufferedReader Exception" + e); } kembali ""; } public static void main (string [] args) {trytest ("c: //users//huangjiawei//desktop//my-release-key.keystore"); trytest1 ("c: //users//huangjiawei//desktop//my-release-key.keystore"); }}4. Tangkap beberapa pengecualian
Sebelum Java 7, beberapa klausa tangkapan harus dimasukkan untuk menangkap beberapa pengecualian. Di Java 7, kita dapat menulis dengan cara ini:
Impor java.util.date;/*** Pernyataan tangkapan berganda hanya akan menjalankan pengecualian tangkapan pertama yang cocok. Tidak peduli berapa banyak tangkapan yang ada, mereka akan diabaikan * @author huangjiawei * */kelas public catchtest {/ * * sebelum java 7 */public static void catchtest () {int a = 100; int b = 0; Tanggal Tanggal = NULL; Coba {System.err.println (date.getTime ()); // Pengecualian dilemparkan ke sini, dan pernyataan berikut tidak akan dieksekusi! int result = a/b; // system.err.println (hasil); // tidak dieksekusi} catch (nullpointerException e) {System.err.println (e); // java.lang.nullpointerexception} catch (arithMeticeSception e) {System.err.println (E); } catch (Exception e) {System.err.println (e); }} / * * java 7 * / public static void catchtest1 () {int a = 100; int b = 0; Tanggal Tanggal = NULL; coba {int result = a/b; System.err.println (hasil); System.err.println (date.getTime ()); } Catch (ArithMeticException | NullPointerException e) {System.err.println (e); // java.lang.arithmeticException:/oleh nol}} public static void main (string [] args) {catchtest (); Catchtest1 (); }}5. Instance Creation Tipe Inference
impor java.util.arraylist; import java.util.list; kelas publik typetest { /** sebelum dan sesudah Java 7, kedua jenis harus dinyatakan* / daftar <string> daftar = ArrayList baru <string> (); /** java 7, setelah <> tidak perlu mendeklarasikan jenisnya, dan tipenya akan secara otomatis disimpulkan berdasarkan <>*/ list <string> sebelumnya = new arraylist <> ();}6. Sistem File yang Ditingkatkan
Java7 telah meluncurkan API NIO2.0 baru untuk mengubah ketidaknyamanan terhadap manajemen file, sehingga menggunakan jenis yang umum digunakan seperti jalur, jalur, file, layanan jam tangan, sistem file, dan produk lain di bawah paket java.nio.file dapat sangat menyederhanakan pekerjaan coding pengembang pada manajemen file.
6.1 Path Interface and Paths Class
Beberapa fungsi antarmuka jalur sebenarnya bisa setara dengan kelas file di bawah paket java.io. Tentu saja, fungsi-fungsi ini terbatas pada operasi hanya baca. Dalam pengembangan aktual, pengembang dapat menggunakan antarmuka jalur dan kelas jalur untuk mendapatkan serangkaian informasi konteks file.
Gunakan Jenis Antarmuka Path dan Paths untuk mendapatkan informasi file:
Impor java.nio.file.path; import java.nio.file.paths; kelas publik pathpathstest {public static void main (string [] args) {path path = paths.get ("c: ///users///huangjiawei///desktop///users//huangjiawei////desktop///helkey. System.out.println ("Jumlah node file:" + path.getNamecount ()); // jumlah node file: 4 system.out.println ("Nama file:" + path.getFileName ()); // Nama File: my-release-key.keystore system.out.println ("Direktori Root File:" + path.getroot ()); // File Root Directory: c: /system.out.println ("File Superior Association Directory:" + Path.getParent ()); // File Superior Association Directory: C:/Users/Huangjiawei/Desktop}}6.2. Kelas File
Menggunakan antarmuka jalur dan kelas Paths dapat dengan mudah mengakses informasi konteks file target. Tentu saja, semua operasi ini semuanya baca-hanya. Jika pengembang ingin melakukan operasi lain yang tidak dibaca pada file, seperti pembuatan, modifikasi, penghapusan, dll., Mereka dapat menggunakan jenis file untuk beroperasi.
Metode umum jenis file adalah sebagai berikut:
Contoh menyalin dan menempelkan file menggunakan jenis file:
File.copy (paths.get ("/test/src.xml"), paths.get ("/test/target.xml"));Menggunakan jenis file untuk mengelola file lebih nyaman dan sederhana daripada metode I/O tradisional. Karena implementasi operasi spesifik akan diserahkan ke API NIO2.0, pengembang tidak perlu memperhatikan.
6.3. Layanan jam tangan
JAVA7 juga memberi pengembang set fungsi sistem file baru, yaitu pemantauan file. Mungkin ada banyak teman di sini yang tidak tahu apa pentingnya dan tujuan pemantauan file. Jadi tolong ingat wadah web yang telah didebug ke dalam fungsi rilis panas. Ketika proyek diulang dan dikerahkan kembali, pengembang tidak perlu me-restart secara manual karena begitu wadah web mendeteksi bahwa file berubah, secara otomatis akan beradaptasi dengan "perubahan" ini dan memuat ulang secara internal. Fungsi penerbitan panas dari wadah web juga didasarkan pada fungsi pemantauan file, jadi harus diakui bahwa kemunculan fungsi pemantauan file sangat penting bagi sistem file Java.
Pemantauan file didorong oleh peristiwa, dan pemicu peristiwa adalah prasyarat untuk pemantauan. Pengembang dapat menggunakan 3 konstanta literal yang disediakan oleh StandardWatchEventKinds Tipe di bawah paket java.nio.file untuk menentukan jenis acara pemantauan. Perlu dicatat bahwa acara pemantauan perlu didaftarkan dengan instance layanan jam tangan.
Peristiwa pemantauan yang disediakan oleh Tipe StandardWatchEventKinds:
Contoh Lengkap Menerapkan Pemantauan File Menggunakan Kelas WatchService:
Impor java.nio.file.filesystems; impor java.nio.file.path; impor java.nio.file.paths; import java.nio.file.standardwatcheventkinds; impor java.nio.file.watchevent; impor java.nio.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.file.fily. java.nio.file.watchservice;/*** sistem pemantauan file* @author huangjiawei*/public class watchviewTest {public static void testwatch () {/* monitor jalur target*/path = paths.get ("c: // pengguna // huangjiaweei/deckop Coba { /* Buat objek pemantauan file. */ WatchService WatchService = FileSystems.getDefault (). NewWatchService (); /* Daftarkan semua jenis acara untuk pemantauan file. */ Path.Register (WatchService, StandardWatchEventKinds.entry_Create, StandardWatchEventKinds.entry_delete, StandardWatchEventKinds.entry_modify); /* File pemantauan loop. */ while (true) {watchkey watchkey = watchservice.take (); /* Mengulangi semua file yang memicu acara*/ untuk (WatchEvent <?> Event: watchkey.pollevents ()) {System.out.println (event.context (). ToString () + "Tipe acara:" + event.kind ()); } if (! watchkey.reset ()) {return; }}} catch (Exception e) {e.printstacktrace (); }} public static void main (string [] args) {testWatch (); }} Melalui contoh program di atas, kita dapat melihat bahwa menggunakan antarmuka WatchService untuk pemantauan file sangat sederhana dan nyaman. Pertama, kita perlu menentukan jalur pemantauan target, dan kemudian memanggil metode sistem file newwatchservice () untuk membuat objek WatchService. Selanjutnya, kita perlu menggunakan metode register () dari antarmuka jalur untuk mendaftarkan instance WatchService dan memantau acara. Ketika semua lapisan kerja dasar ini siap, kami menulis siklus pemantauan real-time perifer. Akhirnya, iterate Over Watchkey untuk mendapatkan semua file yang memicu acara pemantauan.
Sekarang saya akhirnya tahu prinsip dasar dari apa yang disebut pembaruan panas dev-dev di Spring Boot! Ternyata JDK menyediakan API seperti itu.
Meringkaskan
Di atas adalah analisis kode dari JDK 7 fitur baru pengantar singkat oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!