为什么打开对象到long显示InvalidCastException
本文关键字:long 显示 InvalidCastException 对象 为什么 | 更新日期: 2023-09-27 18:16:47
我想知道为什么下面显示一个InvalidCastException
:
Object obj = 9;
long num = (long)obj; //InvalidCastException
在网上搜索后,我发现Object
认为9是Int
,所以long
并不完全匹配Int
。我的问题是为什么Object
认为9是Int
,而不是short
或long
?
因为9
是Int32
字面值。要指定Int64
文字,请使用
Object obj = 9L;
long num = (long)obj;
如果您明确地说它是一个长。纯数读为整数,除非有小数点。
Object obj = 9L;
long num = (long)obj;
下面的语句也会导致无效强制转换异常:
Object obj = 9L;
int num = (int)obj; //InvalidCastException
int
是非十进制数字字面值的默认数据类型,正如double
是十进制数字字面值的默认数据类型一样。您可以将数字字面值强制转换为具有适当后缀的其他类型。你也可以为int
和double
使用后缀,但几乎没有人这样做。