Java 12 intellij 开关表达式不起作用
Posted
技术标签:
【中文标题】Java 12 intellij 开关表达式不起作用【英文标题】:Java 12 intellij switch expressions doesn't work 【发布时间】:2019-09-17 04:41:18 【问题描述】:我尝试在 IntelliJ 中使用 Java 12,但是当我尝试运行我的应用时出现错误
Error:(57, 32) java: switch expressions are a preview feature and are disabled by default.
(use --enable-preview to enable switch expressions)
我在应用配置 VM 选项中添加了 --enable-preview,但仍然出现此错误。我添加了 SDK 路径。有人知道我做错了什么吗?
List<Car> sortedCars = switch (sortType)
case COLOR -> cars.stream().sorted(Comparator.comparing(Car::getColor)).collect(Collectors.toList());
case MILEAGE -> cars.stream().sorted(Comparator.comparing(Car::getMileage)).collect(Collectors.toList());
case MODEL -> cars.stream().sorted(Comparator.comparing(Car::getModel)).collect(Collectors.toList());
case PRICE -> cars.stream().sorted(Comparator.comparing(Car::getPrice)).collect(Collectors.toList());
;
【问题讨论】:
哪个intellij版本? @SebastianS IDEA 2019.1.1 附带说明,尽量避免代码重复,否则,您将忽略 switch 表达式的实际好处。考虑List<Car> sortedCars = cars.stream().sorted( switch (sortType) case COLOR -> Comparator.comparing(Car::getColor); case MILEAGE -> Comparator.comparing(Car::getMileage); case MODEL -> Comparator.comparing(Car::getModel); case PRICE -> Comparator.comparing(Car::getPrice); ).collect(Collectors.toList());
进一步避免重复:List<Car> sortedCars = cars.stream().sorted(Comparator.comparing(switch (sortType) case COLOR -> Car::getColor; case MILEAGE -> Car::getMileage; case MODEL -> Car::getModel; case PRICE -> Car::getPrice; ).collect(Collectors.toList());
【参考方案1】:
默认情况下,语言级别设置为“12 - 无新语言功能”。您需要将其更改为“12 (Preview) - Switch Expression”,您将看到一个弹出窗口来接受预览更改。发布您将能够在 intellij 中运行 switch 表达式的帖子。
语言级别设置
我正在使用 IntelliJ IDEA 2019.1.1(社区版)
【讨论】:
当您从 Intellij 运行时,您是否看到终端中附加了--enable-preview
?你能分享你的执行日志或截图吗?
你弄明白了吗?【参考方案2】:
请确保您的项目的“项目结构”对话框中的“项目语言级别”设置设置为 Java 12。在这种情况下,IntelliJ IDEA 将自动添加 --enable-preview 选项。
运行配置中的 VM 选项字段会影响您的应用程序的启动方式,而不是它的编译方式,因此添加该选项不会产生任何影响。
【讨论】:
以上是关于Java 12 intellij 开关表达式不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作
我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法