1

Object が Byte であり、それを long にキャストしようとしていると想像してください...

現在、バイトコードはこのように少し見えます

   Byte b = Byte.valueOf(1);
   Object source = b;
   Long long = (Long) source;     // fails CCE because a Byte is not a Long
   long value = long.longValue();

Number へのキャストの方がよいでしょうか?

  Byte b = Byte.valueOf(1);
   Number number = (Number) b;     // f
   long value = number.longValue();

本当の問題はもちろん、ClassCastExceptions の可能性を減らしたことです。それは悪いことですか?

4

3 に答える 3

2

なぜキャストするのですか?Bytes にもlongValue()メソッドがあります。

Byte b = Byte.valueOf(1);
long value = b.longValue();

またはさらに良い:

byte b = 1;
long value = (long) b;
于 2012-06-07T10:42:32.853 に答える
0

元の型が何であるかを気にしない場合は、あなたが行ったように Number にキャストするだけです。

于 2012-06-07T10:43:11.027 に答える
0

小さい整数から大きい整数まで、キャストは必要ありません。これはプロモーションと呼ばれ、割り当てによって機能します。

    byte b = (byte) 200;
    long l = b;
    Long ll = l;

Byte-byte および long-Long 変換には、オートボクシングを使用できます。

于 2012-06-07T11:06:49.097 に答える