Java 长整型类转换
我有一个简单的问题。我已经知道,在Java中,您不能执行以下操作:Java 长整型类转换,java,casting,int,long-integer,Java,Casting,Int,Long Integer,我有一个简单的问题。我已经知道,在Java中,您不能执行以下操作: Long.class.cast(此处为整数) 但我只是好奇为什么?相反,你可以很容易地进入溢出,但这样我就找不到任何可能发生的坏事。 有人能告诉我用这种方式铸造有什么不对吗 编辑-> 所以我要做的就是。我已经编写了一个转换器,它将我从提供的输入(它是一个映射)转换为我的模型。我想为我指定的每个模型编写一个转换器。目前,它适用于其中的对象(如我提供的其他模型)、字符串和相同的类型(例如,我得到了一个整数,我提供了一个整数)。我想做
Long.class.cast(此处为整数)
但我只是好奇为什么?相反,你可以很容易地进入溢出,但这样我就找不到任何可能发生的坏事。
有人能告诉我用这种方式铸造有什么不对吗
编辑->
所以我要做的就是。我已经编写了一个转换器,它将我从提供的输入(它是一个映射)转换为我的模型。我想为我指定的每个模型编写一个转换器。目前,它适用于其中的对象(如我提供的其他模型)、字符串和相同的类型(例如,我得到了一个整数,我提供了一个整数)。我想做的是,我想“更新”我的转换器,使其在以下情况下工作:在我的模型中,我有一个Long类型的字段,并且我提供了Integer。所以我希望它将整数转换为长整数,但是,我不希望仅对这种情况使用if(因为在这种情况下,例如,从短到长的转换将是另一个if)。有可能吗?因为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());
因为Object.cast(objectobj)
不仅仅用于数字。它用于类型转换
如果对象不为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());
Integer=1;System.out.println(Long.class.cast(整数))代码>它抛出异常,我只是想知道为什么它是以不同的方式完成的:longl=newlong(10i)代码>@HovercraftFullOfEels)。@Dukeling:谢谢你的帮助that@Ajris你想干什么?从这个角度看,你似乎在尝试做别的事情。这就是所谓的“XY问题”,所以你可能想写一些关于“X”问题的东西;System.out.println(Long.class.cast(整数))代码>它抛出异常,我只是想知道为什么它是以不同的方式完成的:longl=newlong(10i)代码>@HovercraftFullOfEels)。@Dukeling:谢谢你的帮助that@Ajris你想干什么?从这个角度看,你似乎在尝试做别的事情。这被称为“XY问题”,所以你可能想写一些关于你的“X”问题的东西。是的,但是当我使用反射,我不想使用ifs将整数转换为长整数时,有没有可能用另一种方法呢?(long)yourInt
也许Ex:(long)2
我不想使用ifs,co例如,如果我使用casting,它可以将我的一些类转换为另一个类。如果我提供integer,它不会将其转换为long,因为这个异常。我不想每次都检查我提供的是integer还是其他类型,只想有一个同样适用于integer和Long的解决方案。有可能吗?@Ajris Anint
值可以分配给long
变量,而无需(显式)转换。使用原语可能更好,除非您有使用类的特殊需要(或者您的输入是对象
)。@Ajris每个子类(Long
,Integer
,Short
,Byte
,等等)有一个longValue
方法-你不应该特别需要一个用于Integer
的if语句。是的,但是当我使用反射并且我不想使用ifs将Integer强制转换为long时,有没有可能用另一种方法呢?(long)yourInt
也许Ex:(long)2
我不想使用ifs,co例如,如果我使用casting,它可以将我的一些类转换为另一个类。如果我提供integer,它不会将其转换为long,因为这个异常。我不想每次都检查我提供的是integer还是其他类型,只想有一个同样适用于integer和Long的解决方案。有可能吗?@Ajris Anint
值可以分配给long
变量,而无需(显式)转换。使用原语可能更好,除非您有使用类的特殊需要(或者您的输入是对象
)。@Ajris每个子类(Long
,Integer
,Short
,Byte
,等等)有一个longValue
方法-对于Integer
您不应该特别需要if语句。