【发布时间】:2015-04-22 15:42:42
【问题描述】:
在我的 IDE 中工作时,我注意到一些相当奇怪的事情。
double x1 = 0, x2 = 0;
int a = (int) x1 = (int) x2;
所以这是无效的语法,这不足为奇。但是,why 的解释让我感到困惑,这是无效的语法。当我将此代码放入 Eclipse Luna 并将鼠标悬停在第二行时,会出现一条消息:
类型不匹配:无法从 boolean 转换为 int
1 个快速修复可用:
将“a”的类型更改为“布尔”
如果我忽略错误并继续运行,即使 Throwable 堆栈跟踪也会显示相同的消息:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from boolean to int
Syntax error on token "=", <= expected
我不明白为什么编译器会认为(int) x1 = (int) x2 是某种比较,其计算结果为true 或false。有谁知道为什么会这样?
【问题讨论】:
-
好吧,这需要一些时间来由 javac 执行,并且错误是不同的:unexpected type, required: variable found: value。
-
我可以看到它的来源。您认为这是 Eclipse 特有的错误吗?
-
是的。在处理奇怪的编译器异常错误时,先尝试用javac编译代码,它会提供一个better编译错误信息。
-
@TNT IntelliJ 给出了“预期变量”错误(
(int) x1带有红色下划线)。 -
@LuiggiMendoza 谢谢。下次我会记住这一点。
标签: java compiler-errors