国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

譯文 精選
開發(fā) 前端
Java17中所做的所有改進(jìn)都傳達(dá)了一個信息:是時候切換到這個版本了。過渡承諾語法更簡潔,性能得到提高。你的項(xiàng)目將獲得安全性、靈活性和更好的錯誤消息。如果你已經(jīng)遷移到Java11,那么遷移到Java17 會很順利。

作者丨Sergei Dzeboev

編譯丨諾亞

Java17給Java帶來了一些變化,但也使許多開發(fā)人員重新考慮他們遷移到其他JVM語言的愿望。最明顯的變化是在使Java代碼現(xiàn)代化和添加新的語言結(jié)構(gòu)以簡化它的方向上進(jìn)行的。當(dāng)然,這個問題并非沒有對Java核心的改變,這使得Java更加高效。

1、文本塊

文本塊功能終于出現(xiàn)在Java中。我確信這是Java程序員等待已久的變化之一?,F(xiàn)在你可以忘記難以閱讀的長復(fù)合行。文本塊允許你以最方便的方式編寫多行文本。在這樣的塊中,你可以按照自己希望的方式撰寫文本,并且仍然可以使用轉(zhuǎn)義序列進(jìn)行更精確的格式設(shè)置。

Java11. 字符串轉(zhuǎn)義序列:

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.文本塊:

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

另一個慢慢使Java語言更有用的更新是record。以前,要創(chuàng)建一個類,我們需要描述該類,指定其字段,并添加必要的方法,例如equals、hashcode、getter和setters。自從record出現(xiàn)以來,所有這些現(xiàn)在都變得不必要了。

record允許你通過僅指定必填字段來創(chuàng)建數(shù)據(jù)安全類;將自動創(chuàng)建所有其他方法。但是,值得記住的是,record充當(dāng)數(shù)據(jù)類,創(chuàng)建是為了存儲數(shù)據(jù),而不是執(zhí)行各種操作。record是線程安全的,因?yàn)樗衦ecord字段都是最終的。最后要知道的重要一點(diǎn)是,用于獲取字段值的生成方法不會像經(jīng)典Java Bean 中那樣包含“get”。

Java11.數(shù)據(jù)類:

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:

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

區(qū)別很明顯:在執(zhí)行相同功能的同時,創(chuàng)建Record所需的代碼行要少得多。

3、新的switch表達(dá)式

更改列表還包括切換表達(dá)式。這些更改不僅影響了Switch表達(dá)式的語法(使其編寫更加簡潔),還影響了功能。Switch表達(dá)式現(xiàn)在返回迭代的結(jié)果,使編寫代碼變得更加容易,并使其更加簡潔。新的開關(guān)表達(dá)式不再需要每個case后面都加一個break

Java11.switch表達(dá)式:

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. 增強(qiáng)的 Switch 表達(dá)式:

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模式匹配

另一項(xiàng)設(shè)計改進(jìn)也影響了操作員。現(xiàn)在,更安全,更簡潔。通過此更改,不再需要首先檢查給定對象是否是某個類的實(shí)例,然后執(zhí)行強(qiáng)制轉(zhuǎn)換;現(xiàn)在可以在一行中完成此操作。如前所述,這不僅僅是語法糖,而是一個更優(yōu)化的運(yùn)算符。

Java 11. 經(jīng)典的 intanceof

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. 更新的 intanceof

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密封類

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

Java 17. 密封類:

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

Java 17. 非密封繼承人:

public non-sealed class AnotherNonSealedClass extends SealedClass {
}

Java17.最終繼承人:

public final class AnotherFinalClass extends SealedClass {
}

Java17.密封繼承人:

public sealed class AnotherSealedClass extends SealedClass permits AnotherNonSealedClassTwo {
}

Javai17.非密封繼承人二級:

public non-sealed class AnotherNonSealedClassTwo extends AnotherSealedClass {
}

6、NullPointerExceptions

最后,Java 17 中一個非常有用的更新是改進(jìn)的NullPointerException!最后,在堆棧跟蹤日志中,你可以看到哪個特定字段導(dǎo)致了NullPointerException。僅此功能就應(yīng)該鼓勵你切換到Java 17。你不再需要長時間在代碼中四處尋找發(fā)生異常的險惡地方;現(xiàn)在Java將為你完成所有工作。

Java11.NPE:

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.改進(jìn)的NPE:

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、其他創(chuàng)新

當(dāng)然,這并不是Java17中所做的更改的全部列表,但是討論的創(chuàng)新是最引人注目的。與往常一樣,Java開發(fā)人員在改進(jìn)JVM方面做得非常出色,使其更加高效。

8、小結(jié)

Java17中所做的所有改進(jìn)都傳達(dá)了一個信息:是時候切換到這個版本了。過渡承諾語法更簡潔,性能得到提高。你的項(xiàng)目將獲得安全性、靈活性和更好的錯誤消息。如果你已經(jīng)遷移到Java11,那么遷移到Java17 會很順利。Java的競爭優(yōu)勢在這里大放異彩,因?yàn)橄蚝蠹嫒菪栽试S你切換到Java17而無需更改任何代碼,并利用所有更新的功能。Java17是Java11以來又一個LTS(長期支持)版本,可確保你在較長時間內(nèi)收到所有必要的安全更新。

原文鏈接:https://hackernoon.com/is-migrating-from-java-11-to-java-17-worth-it

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2011-04-25 09:35:31

TwitterJava

2012-02-24 09:34:48

SVNGit

2021-09-29 06:28:12

Java 9 Java 17Java 11

2010-09-29 11:06:21

活動目錄OpenLDAP

2010-07-20 09:48:33

2013-06-21 13:49:08

MariaDB

2012-05-21 10:23:36

2023-09-23 08:17:51

Java 17開發(fā)

2016-10-26 16:44:44

WatchfinderAWS云計算

2020-07-27 11:35:26

GitHub代碼開發(fā)者

2025-10-29 08:06:49

2011-06-24 10:10:35

SVN

2022-06-06 07:24:09

Caddy開源Ubuntu

2021-11-29 09:44:03

UmiJSVite前端

2009-02-06 10:32:00

UnixLinux服務(wù)器

2013-05-03 09:49:38

MySQLMariaDB

2020-12-29 10:12:19

WindowsLinux操作系統(tǒng)

2020-09-02 07:20:48

KubernetesJava應(yīng)用程序容器

2020-01-06 12:50:50

Windows 7遷移Windows 10

2009-04-16 17:23:37

OracleBasicFileSecureFile
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲精品久久久久国产| 精品伦精品一区二区三区视频 | 久久成人高清| 国产亚洲a∨片在线观看| 在线免费观看的av| 色久综合一二码| 美女的诞生在线观看高清免费完整版中文 | 亚洲成年人在线| 久久精品蜜桃| 欧美日韩免费一区| 性欧美18+| 欧美亚洲日本在线观看| 丝袜美腿高跟呻吟高潮一区| 成人黄色网免费| 99热国内精品永久免费观看| 欧美日韩在线观看一区二区| 色噜噜色狠狠狠狠狠综合色一| 台湾佬中文娱乐久久久| 99天天综合性| 国产精品成人观看视频国产奇米| 亚洲毛片在线免费| 亚洲视频在线视频| aaaaa毛片| 中文字幕人成不卡一区| 在线免费观看视频黄| 成人同人动漫免费观看| 久久久久久一区二区三区| 性网站在线免费观看| 亚洲特黄一级片| 欧美一区二区福利| 亚洲一区不卡| 一区二区三区在线视频111| 国产精品亚洲欧美一级在线 | 粉嫩一区二区三区在线看| 日本wwwcom| 国产91丝袜在线观看| 日韩欧美国产综合在线| 久久精品夜色噜噜亚洲a∨| 向日葵污视频在线观看| 有坂深雪av一区二区精品| 欧洲亚洲精品视频| 激情久久五月天| 成人av在线不卡| 久久国产中文字幕| 成人片在线免费看| 蜜臀久久99精品久久久久宅男| 91极品女神在线| 日韩精品网站| 久久综合九色综合久99| 夜夜躁狠狠躁日日躁2021日韩| 国产精品视频1区| 在线亚洲精品| 精品国产一区三区| 一区二区三区产品免费精品久久75| 先锋影音亚洲资源| 成人动漫av在线| 国产主播福利| 欧美一区二区三区日韩| 欧美男女视频| 亚洲va久久久噜噜噜| 国产精东传媒成人av电影| 亚洲成成品网站| 66精品视频在线观看| 999精品在线观看| 成人午夜私人影院| 国产视频精品网| 大尺度一区二区| 最猛黑人系列在线播放| 国产亚洲精久久久久久| 亚洲小视频在线播放| 1区2区3区欧美| 日本在线视频网址| 在线观看视频一区| 在线视频cao| 国产精品扒开腿做爽爽爽视频| 久久午夜影视| 男人插女人欧美| 国产丝袜欧美中文另类| 国产三级视频在线| www.亚洲男人天堂| 在线不卡欧美| avtt天堂资源网站| 国产亚洲欧洲高清一区| 欧美午夜国产| 免费高清成人| 国产精品女同互慰在线看| 欧美激情亚洲天堂| 欧美性猛交xxxx久久久| 国产原创一区| 九九99玖玖| 蘑菇福利视频一区播放| 免费观看成人在线| 亚洲男人都懂的| 国产黄色影视| 亚洲精品久久久久中文字幕欢迎你| 日韩高清影视在线观看| 欧美在线性视频| 久久99精品久久久久| 青梅竹马是消防员在线| 欧美—级高清免费播放| 久久99精品久久久久久久久久久久| 最新中文字幕在线观看| 久久久97精品| 美女mm1313爽爽久久久蜜臀| 日本aaa在线观看| 91精品国产免费久久久久久| 国产成人在线视频播放| 日本不卡三区| 欧美成人女星排名| 色喇叭免费久久综合网| www.99在线| 亚洲人午夜精品| 日韩精品久久理论片| 国产在线网站| 国产精品视频一区二区高潮| 中文字幕在线不卡一区| 韩国三级大全久久网站| 欧美一区二区三区…… | 久久久久久久久一区二区| 午夜精品久久久久久久99水蜜桃| 成人涩涩网站| 国产精品少妇在线视频| 在线播放国产一区二区三区| 久久99精品久久久久久 | 欧美一区二区视频免费观看| 欧美日韩国产探花| 四色成人av永久网址| 国产成人一区三区| 自拍偷拍欧美激情| 中文无码日韩欧| 91n.com在线观看| 欧美国产视频日韩| 99re久久最新地址获取| gogo人体高清视频| 欧美亚洲日本网站| 亚洲欧美日韩国产成人精品影院| 91精品啪在线观看国产爱臀| 久久久久久香蕉| 久久全国免费视频| 亚洲伦伦在线| 国产精品久久一区二区三区不卡| 国产精品色婷婷视频| 精品久久久久久电影| 丁香花在线电影| 欧美日韩国产999| 希岛爱理一区二区三区| 黄色一级影院| 国产女人18毛片水18精品| 午夜精品久久久久| 欧美久久久久| 手机av免费在线| 国产精品国三级国产av| 久久夜精品香蕉| 亚洲视频一区二区在线| 97人人精品| 欧美尤物美女在线| 亚洲春色在线视频| 在线日韩中文字幕| **性色生活片久久毛片| 天天做天天爱天天综合网2021| 黄av在线播放| 66m—66摸成人免费视频| 亚洲精选免费视频| 欧美日韩1080p| 成年网站在线视频网站| 五十路熟女丰满大屁股| 欧美最猛性xxxxx免费| 91成人免费电影| 国产精品一区二区久久精品爱涩| 精品久久亚洲| 亚洲男人资源| 操91在线视频| 亚洲啪啪综合av一区二区三区| 欧美午夜一区| 国产精欧美一区二区三区蓝颜男同| 久久99中文字幕| 国产精品成人播放| 欧美精品一区在线观看| 日本一区二区三区国色天香| 国内激情视频在线观看| 黄www在线观看| 亚洲变态欧美另类捆绑| 成人免费毛片app| 精品国产一区二区三区| 青青在线视频| 美女网站色免费| 久久伦理网站| 久久99精品国产99久久6尤物| 色婷婷亚洲精品| heyzo一本久久综合| 一级毛片免费高清中文字幕久久网| 亚洲少妇视频| 中文在线天堂库| a级免费在线观看| 国产欧美日韩最新| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品人人做人人爽人人添| 亚洲日产国产精品| 免费看一区二区三区| 日本在线观看网站|