示例效果最好,想象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();
对数字的投射会不会更好?
Byte b = Byte.valueOf(1);
Number number = (Number) b; // f
long value = number.longValue();
真正的问题当然是我们减少了ClassCastExceptions的可能性,这是件坏事吗?
答案 0 :(得分:2)
为什么选择投球? Byte
也有longValue()
方法。
Byte b = Byte.valueOf(1);
long value = b.longValue();
或者更好:
byte b = 1;
long value = (long) b;
答案 1 :(得分:0)
如果您不关心原始类型是什么,我会像您一样转换为数字。
答案 2 :(得分:0)
从较小的int到较大的int,你不需要铸造。它被称为促销,并按作业工作:
byte b = (byte) 200;
long l = b;
Long ll = l;
对于字节字节和长整型转换,您可以使用自动装箱。