首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jdk-19模式开关无法编译

jdk-19模式开关无法编译
EN

Stack Overflow用户
提问于 2022-10-21 08:24:45
回答 1查看 60关注 0票数 0

我正在使用jdk-19预览模式匹配来尝试一个非常简单的示例:

代码语言:javascript
复制
    static String asString(Object value) {
        return switch (value) {
            case String s && s.length() > 10 -> "bigger then 10 : " + s;
            case String s -> "less then 10 " + s;
            case Collection<?> c ->  "collection : " + c;
            case null -> "null";
            default -> value.toString();
        };
    }

令我惊讶的是,这不能用jdk-19进行编译,但是在jdk-17中工作得很好。这是一个有意的改变还是一个小错误?

错误是:

代码语言:javascript
复制
One.java:13: error: : or -> expected
            case String s && s.length() > 10 -> "bigger then 10 : " + s;
                         ^
One.java:13: error: illegal start of expression
            case String s && s.length() > 10 -> "bigger then 10 : " + s;
                          ^
One.java:13: error: ';' expected
            case String s && s.length() > 10 -> "bigger then 10 : " + s;
                                            ^
One.java:13: error: not a statement
            case String s && s.length() > 10 -> "bigger then 10 : " + s;
                                                                      ^
Note: One.java uses preview features of Java SE 19.
Note: Recompile with -Xlint:preview for details.
4 errors

也是java -version

代码语言:javascript
复制
openjdk version "19" 2022-09-20
OpenJDK Runtime Environment (build 19+37)
OpenJDK 64-Bit Server VM (build 19+37, mixed mode, sharing)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 08:45:19

您可能应该使用when子句

代码语言:javascript
复制
    static String asString(Object value) {
        return switch (value) {
            // Note the `when` here
            case String s when s.length() > 10 -> "bigger then 10 : " + s;
            case String s -> "less then 10 " + s;
            case Collection<?> c ->  "collection : " + c;
            case null -> "null";
            default -> value.toString();
        };
    }

参考资料:https://docs.oracle.com/en/java/javase/19/language/pattern-matching.html#GUID-A5C220F6-F70A-4FE2-ADB8-3B8883A67E8A

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74150784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档