Java14不得不知的5個新功能

Java14不得不知的5個新功能

雖然咱們如今還用的JDK8html

文本塊

之前在Java裏寫個長點的字符串是這個樣子地:程序員

String sql = "select * from t_tianlangstudio_student"   + " where age > 23 and age < 30"  +  " and  sex = 1";123

若是字符串中再包含有雙引號還須要轉義,雖然有IDE幫忙,但仍是時常羨慕ScalaRust裏的文本塊(多行字符串)的寫法,那個酸爽,Java14裏終於也能夠這樣寫了:sql

public static String  index = """		<html>
				<head>
				       <title>tianlangstudio</title>
				</head>
				<body>
				       <h1>一個不安分的程序員</h1>
				</body>
		</html>
		""";12345678910

是否是清爽多了?app

Switch表達式

之前使用switch大概是這個樣子地 :ide

public static int  codeDemo(int i)  {
			int result;
			switch(i) {
					case 1:
					case 2: 
					         result = 18;
					         break;
					case 3:
					         result = 28;
					         break;
					 default: 
					          result = 100;
					          break;
             }
			return result;}12345678910111213141516

如今能夠這樣寫了:spa

public static int code(String s)   {
		int result = switch(s) {
                  case "a"  , "b"   -> 1;
                  case "c"  -> 2;
                  default -> 100; 
         }
         return result;}12345678

是否是清爽了不少?Java也開始區分表達式和(聲明)語句了?關於表達式和語句能夠參考Rust .
不過Rust裏更多使用Match,Java14也對模式匹配有了些許支持,主要體如今instanceOf的使用上。scala

instanceOf

使用instanceOf判斷一個變量是否屬於某個類型的實例的同時,還能聲明一個變量做爲當前類型的實例進行更多的判斷.就像這個樣子:指針

       public static void demo(Object obj) {
               if (obj instanceof String s && s.length() > 4) {
               				System.out.println("it is a String and length greater than 4");
                }
       }12345

沒看出哪裏不同了?注意看String s 。能夠自行腦補下要使用JDK8編寫代碼是什麼樣子的?調試

record

有沒以爲每次定義個(Java類)POJO,須要寫大量的get,set方法還得重寫equals方法特別麻煩,是否是也想要Scala中的樣例類、Rust中的類元組struct那樣簡潔的類型定義方式?
Java14提供了record,能夠這樣定義類型了:code

public static void main(String[] args) {
	Person person1 = new Person("Tianlang", 23);
	Person person2 = new Person("Tianlang",  23);
	System.out.println(person1.equals(person2));  // true}public static record Person(String name, int age){}1234567

就問你清爽不清爽 ?

更有用的空指針異常提示信息

你是否也像我同樣常常寫鏈式調用的代碼,就像這樣:

String str = obj.fieldA.fieldAA.fieldAAA;1

這樣寫起來能夠少費幾根頭髮起變量名稱,直到出現了空指針異常,異常信息只告訴你那一行出現了空指針,爲了調試代碼只好相似這樣:

System.out.println(obj);System.out.println(obj.fieldA);System.out.println(obj.fieldA.fieldAA);String str = obj.fieldA.fieldAA.fieldAAA;1234

是否也曾像我同樣從心底升起無數個草泥馬. 多是咱們的呼喚起了做用,終於在Java14中會告訴你具體那個代碼調用出了空指針。記得要在代碼執行時設置:

-XX:+ShowCodeDetailsInExceptionMessages

若是你像我同樣不想升級JDK又想嘗試新的寫法也能夠考慮新語言如:Scala 或Rust語言.

相關文章
相關標籤/搜索