我有这个简单的代码:
公共(public)类(class)主要{
公共(public)静态void main(String [] args){
字节a = 10,b = 20,c = a + b;
System.out.println(a);
}
}
当然这是一个错误。但是,如果我使用在线编辑器(例如JDoodle)编译代码,则会得到此输入,这是我期望的输入:
错误:类型不兼容:可能从int到字节的有损转换
字节a = 10,b = 20,c = a + b;
^
1个错误
否则,如果我使用Eclipse(2018-12)+ JDK编译代码:
Java版本“1.8.0_231”
Java(TM)SE运行时环境(内部版本1.8.0_231-b11)
Java HotSpot(TM)64位服务器VM(内部版本25.231-b11,混合模式)
我得到这个不同的错误:
Unresolved 编译问题:
类型不匹配:无法从int转换为byte
这怎么可能?我认为第一个错误是正确的(预期的)行为。我应该认为我的jdk有问题吗?
最佳答案
Java语言规范没有规定特定的错误消息。规范只说了类似的话(JLS Chapter 14的所有示例,但在整个规范中都可以找到类似的示例):
生成编译器错误的特定规则在JLS 15.26.1中:
编译器实现者可以随意发表他们认为有用的任何消息。算上自己的幸运,他们不只是说:Erk!
。
关于java - 为什么Java在两个不同的环境中给我两个不同的错误,即使(简单)代码是相同的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60165248/