Java14不得不知的5個新功能

Java14不得不知的5個新功能

雖然我們現(xiàn)在還用的JDK8

文本塊

以前在Java里寫個長點的字符串是這個樣子地:

String sql = "select * from t_tianlangstudio_student"?

+ " where age > 23 and age < 30"?

+? " and? sex = 1";


如果字符串中再包含有雙引號還需要轉(zhuǎn)義,雖然有IDE幫忙颅眶,但還是時常羨慕Scala、Rust里的文本塊(多行字符串)的寫法田弥,那個酸爽涛酗,Java14里終于也可以這樣寫了:

public static String? index = """

<html>

<head>

? ? ? <title>tianlangstudio</title>

</head>

<body>

? ? ? <h1>一個不安分的程序員</h1>

</body>

</html>

""";

是不是清爽多了?

Switch表達式

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

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;

}


現(xiàn)在可以這樣寫了:

public static int code(String s)? {

int result = switch(s) {

? ? ? ? ? ? ? ? ? case "a"? , "b"? -> 1;

? ? ? ? ? ? ? ? ? case "c"? -> 2;

? ? ? ? ? ? ? ? ? default -> 100;

? ? ? ? }

? ? ? ? return result;

}


是不是清爽了很多?Java也開始區(qū)分表達式和(聲明)語句了?關(guān)于表達式和語句可以參考Rust.

不過Rust里更多使用Match偷厦,Java14也對模式匹配有了些許支持煤杀,主要體現(xiàn)在instanceOf的使用上。

instanceOf

使用instanceOf判斷一個變量是否屬于某個類型的實例的同時沪哺,還能聲明一個變量作為當(dāng)前類型的實例進行更多的判斷.就像這個樣子:

? ? ? 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");

? ? ? ? ? ? ? ? }

? ? ? }


沒看出哪里不一樣了?注意看String s ∽萌澹可以自行腦補下要使用JDK8編寫代碼是什么樣子的?

record

有沒覺得每次定義個(Java類)POJO辜妓,需要寫大量的get,set方法還得重寫equals方法特別麻煩,是不是也想要Scala中的樣例類忌怎、Rust中的類元組struct那樣簡潔的類型定義方式?

Java14提供了record籍滴,可以這樣定義類型了:

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){}


就問你清爽不清爽 ?

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

你是否也像我一樣經(jīng)常寫鏈?zhǔn)秸{(diào)用的代碼,就像這樣:

String str = obj.fieldA.fieldAA.fieldAAA;

這樣寫起來可以少費幾根頭發(fā)起變量名稱榴啸,直到出現(xiàn)了空指針異常孽惰,異常信息只告訴你那一行出現(xiàn)了空指針,為了調(diào)試代碼只好類似這樣:

System.out.println(obj);

System.out.println(obj.fieldA);

System.out.println(obj.fieldA.fieldAA);

String str = obj.fieldA.fieldAA.fieldAAA;


是否也曾像我一樣從心底升起無數(shù)個草泥馬. 可能是我們的呼喚起了作用鸥印,終于在Java14中會告訴你具體那個代碼調(diào)用出了空指針勋功。記得要在代碼執(zhí)行時設(shè)置:

-XX:+ShowCodeDetailsInExceptionMessages

如果你像我一樣不想升級JDK又想嘗試新的寫法也可以考慮新語言如:ScalaRust語言.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市库说,隨后出現(xiàn)的幾起案子狂鞋,更是在濱河造成了極大的恐慌,老刑警劉巖潜的,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骚揍,死亡現(xiàn)場離奇詭異,居然都是意外死亡啰挪,警方通過查閱死者的電腦和手機信不,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亡呵,“玉大人抽活,你說我怎么就攤上這事≌海” “怎么了酌壕?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵掏愁,是天一觀的道長。 經(jīng)常有香客問我卵牍,道長果港,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任糊昙,我火速辦了婚禮辛掠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘释牺。我一直安慰自己萝衩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布没咙。 她就那樣靜靜地躺著猩谊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭刚。 梳的紋絲不亂的頭發(fā)上牌捷,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音涡驮,去河邊找鬼暗甥。 笑死,一個胖子當(dāng)著我的面吹牛捉捅,可吹牛的內(nèi)容都是我干的撤防。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棒口,長吁一口氣:“原來是場噩夢啊……” “哼寄月!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陌凳,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剥懒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后合敦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體初橘,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年充岛,在試婚紗的時候發(fā)現(xiàn)自己被綠了保檐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡崔梗,死狀恐怖夜只,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒜魄,我是刑警寧澤扔亥,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布场躯,位于F島的核電站,受9級特大地震影響旅挤,放射性物質(zhì)發(fā)生泄漏踢关。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一粘茄、第九天 我趴在偏房一處隱蔽的房頂上張望签舞。 院中可真熱鬧,春花似錦柒瓣、人聲如沸儒搭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搂鲫。三九已至,卻和暖如春磺平,著一層夾襖步出監(jiān)牢的瞬間默穴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工褪秀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薛训。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓媒吗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乙埃。 傳聞我的和親對象是個殘疾皇子闸英,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355