Java 长整型类转换

Java 长整型类转换,java,casting,int,long-integer,Java,Casting,Int,Long Integer,我有一个简单的问题。我已经知道,在Java中,您不能执行以下操作: Long.class.cast(此处为整数) 但我只是好奇为什么?相反,你可以很容易地进入溢出,但这样我就找不到任何可能发生的坏事。 有人能告诉我用这种方式铸造有什么不对吗 编辑-> 所以我要做的就是。我已经编写了一个转换器,它将我从提供的输入(它是一个映射)转换为我的模型。我想为我指定的每个模型编写一个转换器。目前,它适用于其中的对象(如我提供的其他模型)、字符串和相同的类型(例如,我得到了一个整数,我提供了一个整数)。我想做

我有一个简单的问题。我已经知道,在Java中,您不能执行以下操作:

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 An
int
值可以分配给
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 An
int
值可以分配给
long
变量,而无需(显式)转换。使用原语可能更好,除非您有使用类的特殊需要(或者您的输入是
对象
)。@Ajris每个子类(
Long
Integer
Short
Byte
,等等)有一个
longValue
方法-对于
Integer
您不应该特别需要if语句。