日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

從 Java 11 遷移到 Java 17 值得嗎?

來源: 責編: 時間:2023-08-09 23:02:35 380觀看
導讀作者丨Sergei Dzeboev編譯丨諾亞Java17給Java帶來了一些變化,但也使許多開發人員重新考慮他們遷移到其他JVM語言的愿望。最明顯的變化是在使Java代碼現代化和添加新的語言結構以簡化它的方向上進行的。當然,這個問題并

作者丨Sergei DzeboevIIV28資訊網——每日最新資訊28at.com

編譯丨諾亞IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java17給Java帶來了一些變化,但也使許多開發人員重新考慮他們遷移到其他JVM語言的愿望。最明顯的變化是在使Java代碼現代化和添加新的語言結構以簡化它的方向上進行的。當然,這個問題并非沒有對Java核心的改變,這使得Java更加高效。IIV28資訊網——每日最新資訊28at.com

1、文本塊

IIV28資訊網——每日最新資訊28at.com

文本塊功能終于出現在Java中。我確信這是Java程序員等待已久的變化之一。現在你可以忘記難以閱讀的長復合行。文本塊允許你以最方便的方式編寫多行文本。在這樣的塊中,你可以按照自己希望的方式撰寫文本,并且仍然可以使用轉義序列進行更精確的格式設置。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java11. 字符串轉義序列:IIV28資訊網——每日最新資訊28at.com

public String poem = "                " +            "Twinkle, Twinkle, Little Star/n" +            "                /n" +            "                Twinkle, twinkle, little star,/n" +            "                How I wonder what you are!/n" +            "                Up above the world so high,/n" +            "                Like a diamond in the sky./n" +            "                /n" +            "                Twinkle, twinkle, little star,/n" +            "                How I wonder what you are!";

Java17.文本塊:IIV28資訊網——每日最新資訊28at.com

public String poem = """                Twinkle, Twinkle, Little Star                                Twinkle, twinkle, little star,                How I wonder what you are!                Up above the world so high,                Like a diamond in the sky.                                Twinkle, twinkle, little star,                How I wonder what you are!            """;

2、Record

IIV28資訊網——每日最新資訊28at.com

另一個慢慢使Java語言更有用的更新是record。以前,要創建一個類,我們需要描述該類,指定其字段,并添加必要的方法,例如equals、hashcode、getter和setters。自從record出現以來,所有這些現在都變得不必要了。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

record允許你通過僅指定必填字段來創建數據安全類;將自動創建所有其他方法。但是,值得記住的是,record充當數據類,創建是為了存儲數據,而不是執行各種操作。record是線程安全的,因為所有record字段都是最終的。最后要知道的重要一點是,用于獲取字段值的生成方法不會像經典Java Bean 中那樣包含“get”。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java11.數據類:IIV28資訊網——每日最新資訊28at.com

public class DataClass {    public DataClass (Integer id, String name) {        this.id = id;        this.name = name;    }    private final Integer id;    private final String name;    public Integer getId() {        return id;    }    public String getName() {        return name;    }    @Override    public boolean equals(Object o) {        ...    }    @Override    public int hashCode() {        ...    }}

Java17.Record:IIV28資訊網——每日最新資訊28at.com

public record DataClass(Integer id, String name) {}

IIV28資訊網——每日最新資訊28at.com

區別很明顯:在執行相同功能的同時,創建Record所需的代碼行要少得多。IIV28資訊網——每日最新資訊28at.com

3、新的switch表達式

IIV28資訊網——每日最新資訊28at.com

更改列表還包括切換表達式。這些更改不僅影響了Switch表達式的語法(使其編寫更加簡潔),還影響了功能。Switch表達式現在返回迭代的結果,使編寫代碼變得更加容易,并使其更加簡潔。新的開關表達式不再需要每個case后面都加一個breakIIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java11.switch表達式:IIV28資訊網——每日最新資訊28at.com

public String getSeasonDescription(Season season) {        String seasonDescription;        switch (season) {            case SPRING:                seasonDescription = "Flowers are blooming!";                break;            case SUMMER:                seasonDescription = "It's hot outside!";                break;            case AUTUMN:                seasonDescription = "Leaves are falling!";                break;            case WINTER:                seasonDescription = "Snow is coming!";                break;            default:                throw new IllegalStateException("Invalid season: " + season);        }        return seasonDescription;    }

Java 17. 增強的 Switch 表達式:IIV28資訊網——每日最新資訊28at.com

public String getSeasonDescription(Season season) {        return switch (season) {            case SPRING -> "Flowers are blooming!";            case SUMMER -> "It's hot outside!";            case AUTUMN -> "Leaves are falling!";            case WINTER -> "Snow is coming!";        };    }

4、instanceof模式匹配

IIV28資訊網——每日最新資訊28at.com

另一項設計改進也影響了操作員。現在,更安全,更簡潔。通過此更改,不再需要首先檢查給定對象是否是某個類的實例,然后執行強制轉換;現在可以在一行中完成此操作。如前所述,這不僅僅是語法糖,而是一個更優化的運算符。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java 11. 經典的 intanceofIIV28資訊網——每日最新資訊28at.com

public void findInstance(Object o) {        if (o instanceof String) {            String s = (String) o;            System.out.printf("Object is a string %s", s);        } else if (o instanceof Number) {            Number n = (Number) o;            System.out.printf("Object is a number %n", n);        }    }

Java 17. 更新的 intanceofIIV28資訊網——每日最新資訊28at.com

public void findInstance(Object o) {        if (o instanceof String s) {            System.out.printf("Object is a string %s", s);        } else if (o instanceof Number n) {            System.out.printf("Object is a number %n", n);        }    }

5、Sealed Classes密封類

IIV28資訊網——每日最新資訊28at.com

Java 17也考慮了安全性,并朝著這個方向邁出了重要的一步。這個想法是限制類或接口的繼承,同時保持其公開。結果,新的類類型,密封類,被添加到Java中。密封類的語法允許你指定可以使用其功能的后代。反過來,繼承者還可以允許或拒絕繼承,或者指定可以沿鏈繼承的類。此功能使你可以更靈活地創建項目,并方便地調整代碼的API。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java 17. 密封類:IIV28資訊網——每日最新資訊28at.com

public sealed class SealedClass permits AnotherSealedClass, AnotherNonSealedClass, AnotherFinalClass {}

Java 17. 非密封繼承人:IIV28資訊網——每日最新資訊28at.com

public non-sealed class AnotherNonSealedClass extends SealedClass {}

Java17.最終繼承人:IIV28資訊網——每日最新資訊28at.com

public final class AnotherFinalClass extends SealedClass {}

Java17.密封繼承人:IIV28資訊網——每日最新資訊28at.com

public sealed class AnotherSealedClass extends SealedClass permits AnotherNonSealedClassTwo {}

Javai17.非密封繼承人二級:IIV28資訊網——每日最新資訊28at.com

public non-sealed class AnotherNonSealedClassTwo extends AnotherSealedClass {}

6、NullPointerExceptions

IIV28資訊網——每日最新資訊28at.com

最后,Java 17 中一個非常有用的更新是改進的NullPointerException!最后,在堆棧跟蹤日志中,你可以看到哪個特定字段導致了NullPointerException。僅此功能就應該鼓勵你切換到Java 17。你不再需要長時間在代碼中四處尋找發生異常的險惡地方;現在Java將為你完成所有工作。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

Java11.NPE:IIV28資訊網——每日最新資訊28at.com

public static void main(String... args) {        String s = null;        System.out.println(s.toLowerCase());    }
Exception in thread "main" java.lang.NullPointerException at Main.main(Main.java:4)

Java17.改進的NPE:IIV28資訊網——每日最新資訊28at.com

public static void main(String... args){        String s = null;        System.out.println(s.toLowerCase());    }
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "s" is null at edu.javamodules/edu.javaversions.eleventoseventeen.NpeExample.main(NpeExample.java:7)

7、其他創新

IIV28資訊網——每日最新資訊28at.com

當然,這并不是Java17中所做的更改的全部列表,但是討論的創新是最引人注目的。與往常一樣,Java開發人員在改進JVM方面做得非常出色,使其更加高效。IIV28資訊網——每日最新資訊28at.com

8、小結

Java17中所做的所有改進都傳達了一個信息:是時候切換到這個版本了。過渡承諾語法更簡潔,性能得到提高。你的項目將獲得安全性、靈活性和更好的錯誤消息。如果你已經遷移到Java11,那么遷移到Java17 會很順利。Java的競爭優勢在這里大放異彩,因為向后兼容性允許你切換到Java17而無需更改任何代碼,并利用所有更新的功能。Java17是Java11以來又一個LTS(長期支持)版本,可確保你在較長時間內收到所有必要的安全更新。IIV28資訊網——每日最新資訊28at.com

IIV28資訊網——每日最新資訊28at.com

原文鏈接:https://hackernoon.com/is-migrating-from-java-11-to-java-17-worth-itIIV28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-5140-0.html從 Java 11 遷移到 Java 17 值得嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 大模型速度狂飆2.39倍!清華聯手微軟首提SoT,讓LLM思考更像人類

下一篇: Rust“巨坑”?真相來了!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美精品v日韩精品v国产精品| 欧美人成网站| 午夜精品福利一区二区蜜股av| 午夜在线成人av| 久久精彩免费视频| 亚洲永久精品国产| 久久国产黑丝| 欧美高清在线一区二区| 国产精品v片在线观看不卡| 国产精品视频久久| 在线观看的日韩av| 黄色一区二区在线| 亚洲乱码国产乱码精品精天堂| 国产一区二区三区在线观看免费视频| 精品动漫3d一区二区三区免费| 亚洲精品日日夜夜| 新片速递亚洲合集欧美合集| 免费观看一区| 欧美激情亚洲一区| 国产精品一区二区三区免费观看| 亚洲丁香婷深爱综合| 亚洲综合精品自拍| 欧美电影在线观看| 国产毛片精品国产一区二区三区| 亚洲国产激情| 亚洲美女视频在线观看| 欧美一区二区三区四区高清| 欧美精品在欧美一区二区少妇| 国产欧美 在线欧美| 亚洲另类在线一区| 久久精品一区蜜桃臀影院 | 午夜精品成人在线视频| 免费视频亚洲| 国产亚洲激情| 亚洲第一天堂无码专区| 午夜精品视频网站| 欧美日韩亚洲视频| 亚洲第一精品久久忘忧草社区| 欧美一级黄色录像| 香蕉久久夜色精品| 欧美国产在线视频| 国产真实久久| 亚洲欧美卡通另类91av| 欧美亚洲日本国产| 欧美三级电影一区| 最近看过的日韩成人| 久久精品女人天堂| 欧美高清视频在线播放| 国产日韩欧美中文| 亚洲桃色在线一区| 欧美久久久久久久久| 伊人婷婷久久| 久久国产主播精品| 国产精品你懂的| 亚洲私人影院在线观看| 欧美极品aⅴ影院| 在线成人免费视频| 久久成人久久爱| 国产精品视频九色porn| 亚洲一二区在线| 欧美日韩你懂的| 亚洲日本一区二区三区| 久久亚洲综合| 红桃视频成人| 久久精品人人爽| 国产在线视频欧美| 久久精品欧洲| 国产亚洲一区二区在线观看 | 国产午夜精品久久久| 亚洲欧美另类在线| 国产精品夫妻自拍| 在线视频日韩| 欧美三级视频在线播放| 9人人澡人人爽人人精品| 欧美精品一区二区在线观看| 国产精品porn| 99亚洲视频| 欧美视频导航| 亚洲欧美国产精品桃花| 欧美性事在线| 亚洲一区二区三区四区五区午夜| 欧美私人网站| 亚洲欧美国产高清| 国产欧美一二三区| 久久久精品国产一区二区三区 | 国产精品日韩在线播放| 亚洲女女女同性video| 国产精品久久久久影院亚瑟| 亚洲国产欧美一区| 美女黄毛**国产精品啪啪| 亚洲高清在线观看| 欧美国产亚洲视频| 日韩一区二区精品在线观看| 欧美理论片在线观看| 一区二区三区视频在线看| 欧美四级伦理在线| 午夜宅男欧美| 国内成人精品视频| 久久久久久穴| 亚洲国产美女精品久久久久∴| 欧美大片在线观看| 一区二区三区日韩欧美精品| 国产精品你懂得| 久久成人精品视频| 亚洲福利免费| 欧美日韩精品系列| 亚洲欧美伊人| 精品动漫3d一区二区三区免费 | 欧美日韩精品久久久| 在线精品视频一区二区三四| 欧美v日韩v国产v| 夜夜嗨av一区二区三区中文字幕| 国产精品久久久久国产精品日日| 久久福利视频导航| 午夜在线a亚洲v天堂网2018| 国产精品美女www爽爽爽视频| 亚洲欧美日韩国产综合| 黑丝一区二区三区| 欧美国产1区2区| 亚洲午夜精品一区二区| 国产亚洲综合精品| 欧美二区在线播放| 亚洲自啪免费| 欲色影视综合吧| 欧美视频导航| 久久久成人精品| av成人国产| 国内外成人免费激情在线视频| 欧美伊久线香蕉线新在线| 国产精品久久久一区二区| 久久精品国产亚洲a| 亚洲精品视频在线看| 国产精品免费视频观看| 免费在线成人| 亚洲欧美日韩精品一区二区| 亚洲第一精品影视| 国产精品看片资源| 卡通动漫国产精品| 亚洲一区二区三区高清| 尤物精品在线| 国产精品久久久久久影视| 另类综合日韩欧美亚洲| 亚洲一级片在线看| 亚洲国产天堂久久综合网| 国产精品永久免费观看| 欧美国产综合一区二区| 欧美一级专区免费大片| 亚洲免费观看在线视频| 狠狠综合久久av一区二区小说| 欧美三级日本三级少妇99| 久久视频免费观看| 亚洲国产老妈| 国产欧美日韩一区| 欧美另类videos死尸| 久久精品91| 亚洲一区二区三区激情| 亚洲国产欧美一区| 国产婷婷一区二区| 欧美三区美女| 欧美多人爱爱视频网站| 久久精品国产一区二区电影| 亚洲一区二区成人在线观看| 亚洲欧洲美洲综合色网| 韩国精品在线观看| 国产精品一区二区三区久久| 欧美日产一区二区三区在线观看 | 亚洲日韩视频| 狠狠色狠色综合曰曰| 国产精品日韩精品欧美精品| 欧美日韩a区| 欧美电影免费观看网站| 榴莲视频成人在线观看| 欧美专区在线播放| 香蕉成人啪国产精品视频综合网| 一区二区三区精品| 亚洲精品小视频在线观看| 又紧又大又爽精品一区二区| 国产在线欧美日韩| 国产日韩在线看| 国产精品日韩精品欧美在线| 欧美性猛交xxxx免费看久久久| 欧美久色视频| 欧美高清不卡在线| 蜜桃久久精品一区二区| 久久婷婷国产综合国色天香| 久久国产欧美日韩精品| 小黄鸭视频精品导航| 亚洲欧美国内爽妇网| 亚洲免费在线视频一区 二区| 宅男噜噜噜66一区二区| 中文一区字幕| 亚洲一级在线观看| 亚洲视频在线观看免费| 在线中文字幕不卡| 亚洲天堂男人| 亚洲制服丝袜在线| 91久久国产综合久久| 国产在线欧美| 国产亚洲美州欧州综合国| 国产欧美精品va在线观看| 国产免费观看久久| 国产午夜亚洲精品不卡| 国产一区二区精品久久| 国产一区二区三区无遮挡|