在 Java 里 switch 报错通常是因为语法或类型使用不符合规定。下面按常见原因给你排查清单,你可以对照看是哪一种。
byteshortcharintenumString(Java 7+)Integer、Character 等包装类(自动拆箱)switch (longValue) { } // ❌ long 不支持
switch (doubleValue) { } // ❌ double 不支持
switch (floatValue) { } // ❌ float 不支持
switch (booleanValue){} // ❌ boolean 不支持
✅ 解决:
switch ((int) longValue) { }
int x = 1;
switch (a) {
case x: // ❌ x 不是常量
}
final int x = 1;
switch (a) {
case x:
}
或:
switch (a) {
case 1:
}
switch (a) {
case 1:
case 1: // ❌ 重复
}
✅ 解决:删除重复 case
switch (a) {
case 1:
System.out.println("1");
case 2:
System.out.println("2");
}
✅ 建议:
case 1:
System.out.println("1");
break;
int result = switch (x) {
case 1 -> 10;
case 2 -> 20;
default -> 0;
};
switch (x) { // ❌ 旧写法混用新语法
case 1: -> 10;
}
✅ 解决:统一语法版本
switch (a) {
case 1: break;
// ⚠ 建议加 default
}
String → Java 7+switch 表达式 → Java 12+✅ 查看版本:
java -version
把 报错信息 + 代码 发出来,例如:
error: incompatible types: long cannot be converted to int
我可以直接告诉你怎么改 ✅
如果你愿意,可以把你的 switch 代码贴出来。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。