SCJP:不能加宽然后盒子,但你可以盒子然后加宽

Jac*_*ack 5 java scjp

我正在攻读SCJP考试,我遇到了一个我无法真正解决的问题.

这本书说你不能加宽然后盒子,但你可以装盒然后加宽.无法框的示例是期望Long的方法,并且使用字节调用该方法.

他们的解释是:

想一想......如果它先尝试先打包,那么该字节就会被转换为字节.现在我们又回到尝试将字节扩展到Long,当然,IS-A测试失败了.

但这听起来像盒子然后加宽而不是加宽然后盒子给我.

任何人都可以澄清整个盒子并扩大与扩大和盒子对我来说因为它本来就不是很清楚这个问题.

编辑:澄清:我正在谈论SCJP sun认证程序员的第6页和第253页,用于java 6书. http://books.google.be/books?id=Eh5NcvegzMkC&pg=PA252#v=onepage&q&f=false

Col*_*ert 1

这不是扩大,因为 Byte 不适合 Long。这就是为什么它不起作用。

您可以装箱为 Byte,然后加宽为 anObject或 a Number

正如你的书所说:

我们又开始尝试将 Byte 扩大为 Long


对于你的情况,我想代码如下所示:

byte b = 1;
Long l = b;
Run Code Online (Sandbox Code Playgroud)

b 被更改为 a Byte(首先装箱),但不能更改为 a,Long因为 Byte 不是 的子类Long

更多步骤:

byte b = 1;
Byte byteB = b; //works
Long l = byteB; //doesn't work
Run Code Online (Sandbox Code Playgroud)