我有一个简单的问题。我已经知道,在Java中您无法做某事:
Long.class.cast(and Integer here)
但是我很好奇为什么?相反,您很容易陷入溢出,但是这种方式我无法发现可能发生的任何不良情况。 谁能告诉我以这种方式使用投射有什么问题吗?
编辑->
所以我正在尝试做。我已经写了一个转换器,将我从提供的输入(它是一个Map)转换成我的模型。我想为我指定的每个模型编写1个转换器。目前,它适用于其中的对象(例如我提供的其他模型),字符串和相同的类型(例如,我有一个整数,我提供了一个整数)。我想做的是,我想“更新”转换器以使其在以下情况下工作:在我的模型中,我有一个Long类型的字段,并且我提供了Integer。因此,我希望将Integer转换为Long,但是,我不想仅在这种情况下使用(因为在这种情况下,例如从Short转换为Long会是另外一种情况)。有可能吗?
答案 0 :(得分:2)
因为Object.cast(Object obj)
不仅用于数字。用于类型转换。
ClassCastException
。
您可以使用此功能:
Integer integer = 1;
Long l = integer.longValue();
或者您可以在longValue
或Long
上致电Integer
,然后使用Long.class.cast
:
Integer integer = 1;
Long longType = 1L;
Long l = Long.class.cast(longType.longValue());
l = Long.class.cast(integer.longValue());