public class Test { public static void main(String[] args) { Number x = new Integer(3); System.out.println(x.intValue()); System.out.println(x.compareTo(new Integer(4))); } }为什么编译错误
时间: 2024-03-03 22:49:33 浏览: 61
编译项目后,出现如下错误
这段代码在Java 9及以上版本中会编译出错,错误信息为:
```
Error: java: incompatible types: java.lang.Integer cannot be converted to java.lang.Number
```
原因是Java 9中对`Number`和`Integer`等数值类型进行了改进,使得它们之间的自动转换更加严格。在这段代码中,将一个`Integer`对象赋值给`Number`类型的变量`x`时,需要进行强制类型转换,否则会导致编译错误。
修正后的代码如下:
```
public class Test {
public static void main(String[] args) {
Number x = (Number) new Integer(3);
System.out.println(x.intValue());
System.out.println(x.compareTo(new Integer(4)));
}
}
```
在强制类型转换后,代码就可以正常编译和运行了。
阅读全文