mav*_*vix 3 java eclipse compiler-errors
在学校的组项目上工作,当我在命令行中运行javac时,以下行会引发错误.
Object result = engine.eval(equation); //evaluate the arithmetic expression
cellValue = (double) result; // <-- This throws a compiler error (obviously)
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,这会在我的小组成员正在使用的eclipse中编译和工作(!).我试着让自己确认,因为我无法相信.
ScriptEngine engine = manager.getEngineByName("JavaScript");
Run Code Online (Sandbox Code Playgroud)
引擎是一个ScriptEngine,如果这是相关的.我不能为我的生活弄清楚eclipse的编译器如何允许编译Object
直接转换为a的行double
.
可能你的朋友正在使用另一种版本的Java语言.的演员Object
来double
(基本类型)似乎是合法的在Java 7中,而不是在Java中6,你可以有你的朋友在Eclipse中更改他们的项目设置或更新您的编译器版本7.
请注意,转换Object
为Double
(类)在两个版本中都有效.
似乎允许的转换已在Java 5和7之间进行了扩展.在Java语言规范中,第3版(适用于Java 5和6):
可以通过拆箱转换(第5.1.8节)将引用类型的值转换为基元类型.
拆箱转换将引用类型的值转换为基本类型的相应值.具体来说,以下8个转换称为拆箱转换:
- 从类型Boolean到类型boolean
- 从类型字节到类型字节
- 从类型字符到类型字符
- 从短类型到短类型
- 从类型Integer到类型int
- 从类型Long到类型long
- 从类型Float到类型float
- 从类型Double到类型double
所以在Java 5和6中,强制Object
转换double
是不合法的.
下表列举了在某些转换转换中使用的转换.每次转化都用符号表示:
⇓表示缩小参考转换(第5.1.6节)
⊔表示拆箱转换(§5.1.8)
并且下表描述了从Object到double的转换
⇓,⊔
即,从流延Object
到double
是流延到Double
随后取消装箱转换到double
.
因此,当您编译Java 6时,您的团队成员很可能正在编译Java 7.
归档时间: |
|
查看次数: |
392 次 |
最近记录: |