【Android基于JAVA8的switch报错】Constant expression required 我猜很多人都遇到了……

本文讲述了开发者在AndroidStudio中遇到的switch语句无法使用String或R.id的错误,作者尝试了if-else替代方法,指出问题源于JDK版本限制,且8、11、17版本不支持,寻求更高版本JDK的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题点

我猜应该很多人都遇见了switch无法使用String或者R.id.XXX报错的问题,会提示Constant expression required,虽然无法使用String,但是R.id.xxx报错的问题我这边查了个大概只能用else if

先看图

在这里插入图片描述

解决办法

其实也没什么太好的办法,看了很多帖子,最后我决定修改成if else的方法。

在这里插入图片描述

其实看过一些blog说,在Android Studio的开发工具下,可以点击Ctrl + F1,就会弹出这个弹框,然后直接换成 if,但是AS这个工具还是不够智能,没法一次性换好,最终还是需要一个一个写,没能解决switch不能使用R.id.xxx的办法,效率一定会降低,不过目前来看起码可以解决手边的问题,工作量着实有点大……很愁人。

结果

其实这个问题来源于switch语句中可使用的值类型限制为byte、short、char、int或enum类型,但是我清晰的记得,以前的某个jdk≠8版本是可以使用String等变量的,我这边测试了Oracle官网放着的8、11、17三个版本都不可以,这次虽然解决了,但是如果有哪位知道什么版本的jdk可以使用,还麻烦留言一下。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值