我有一个简单的问题。我已经知道在 Java 中你不能做这样的事情:
Long.class.cast(and Integer here)
但我只是好奇为什么?相反,你可以很容易地进入溢出,但这样我就找不到任何可能发生的坏事。 谁能告诉我以这种方式使用铸造有什么问题?
编辑>
所以我正在努力做什么。我已经编写了一个转换器,它将我从我提供的输入(它是一个地图(转换为我的模型。我想为我指定的每个模型编写 1 个转换器。目前,它适用于其中的对象(例如我提供的其他模型(、字符串和相同的类型(例如我有一个整数,我提供了一个整数(。我想做的是,我想"更新"我的转换器以在以下情况下工作:在我的模型中,我有一个 Long 类型的字段,我提供了整数。所以我希望它将整数转换为长整型,但是,我不想只在这种情况下进行如果(因为在这种情况下,例如从短到长转换将是另一个如果(。可能吗?
因为Object.cast(Object obj)
不仅仅是数字。它用于类型转换。
如果对象不为 null 且不可分配给 Long 类型,则将引发ClassCastException
。
你可以使用这个:
Integer integer = 1;
Long l = integer.longValue();
或者您可以在Long
或Integer
上调用longValue
,然后使用Long.class.cast
:
Integer integer = 1;
Long longType = 1L;
Long l = Long.class.cast(longType.longValue());
l = Long.class.cast(integer.longValue());