我有这个简单的代码:

公共(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/

10-11 22:23
查看更多