4
在我的IDE中工作时,我发现了一些相当奇怪的东西。涉及铸造的奇怪编译错误
double x1 = 0, x2 = 0;
int a = (int) x1 = (int) x2;
所以这是无效的语法,毫不奇怪。但是,这是的解释,为什么这是无效的语法,让我困惑。当我把这个代码在Eclipse露娜和悬停在第二行,会出现一个消息,说:
类型不匹配:不能从布尔值转换为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执行,并且错误是不同的:*意外类型,必需:变量found:value *。 –
我可以看到从哪里来。你认为这是一个Eclipse特有的错误? – TNT
是的。在处理奇怪的编译器异常错误时,尝试先用javac编译代码,它将提供*更好的*编译错误消息。 –