发布于 2026-01-06 0 阅读
0

值得关注的 JDK 12 有趣特性。还在用 Java 8 吗?:( 由 Mux 主办的 DEV 全球项目展示挑战赛:快来展示你的项目吧!

值得关注的 JDK 12 新功能。

卡在Java8了 :(

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

随着 Java 新的 6 个月发布周期,开发者们将能更快地体验到各种炫酷功能。我已经看到一些很棒的新功能,预计它们将在明年发布的 JDK 12 中亮相。您可以获取 OpenJDK 12 的早期访问版本,并体验这些预览功能

切换表达式

例如,假设你有一个表示星期几的枚举类型,你想用 switch 语句返回字符串中的字母数量。虽然有更好的方法,但为了演示,我们将使用 switch 语句。

以下是枚举值:

enum DayOfWeek{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

Enter fullscreen mode Exit fullscreen mode

以我们对 Java 的了解,这可能是解决方案:

      int numLetters;
        switch(day){
            case MONDAY: case FRIDAY: case SUNDAY:
                numLetters=6;
                break;
            case TUESDAY:
                numLetters=7;
                break;
            case THURSDAY: case SATURDAY:
                numLetters=9;
                break;
            case WEDNESDAY:
                numLetters=10;
                break;
            default:
                throw new NoSuchDayException(day);

        }
Enter fullscreen mode Exit fullscreen mode

这可能会引发一些 bug,因为这会使代码难以维护。
使用 Switch 表达式,您可以将 Switch 语句编写成表达式。Switch 语句中不需要默认值。

以下是代码示例:

int numLetters=switch(day)
        {
            case MONDAY, FRIDAY, SUNDAY -> 6;
            case TUESDAY -> 7;
            case THURSDAY, SATURDAY -> 8;
            case WEDNESDAY -> 9;
        };
Enter fullscreen mode Exit fullscreen mode

记录

我们都知道 POJO(Plain Old Java Object,普通 Java 对象),它们包含大量样板代码,例如,以下是一个典型的 POJO:

class Point {
    double x;
    double y;

    Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getX() {
        return x;
    }

    public void setY(double y) {
        this.y = y;
    }

    public double getY() {
        return y;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }


    @Override
    public String toString() {
        return super.toString();
    }
}

Enter fullscreen mode Exit fullscreen mode

Records (截至撰写本文时,尚未针对 JDK 12)用一行代码替换了所有 POJO 代码:

 record Point(double x, double y);
Enter fullscreen mode Exit fullscreen mode

JDK 12 及更高版本还有其他很棒的功能值得期待,我个人很欣赏 Java 社区的积极响应和推动 Java 向前发展的努力。

如果您想了解更多,可以观看这个视频:

文章来源:https://dev.to/lemuelogbunude/interesting-jdk-12-features-to-watch-out-for-ijp