Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对象转换为长数据类型java_Java_Object_Long Integer - Fatal编程技术网

如何将对象转换为长数据类型java

如何将对象转换为长数据类型java,java,object,long-integer,Java,Object,Long Integer,我有一个错误代码 public int part(Object key) { long clientId = (long) key; ... } 以下是错误: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 不确定它引发异常的原因。正如注释中所解释的,Java不允许将一种原语包装类型强制转换为另一种原语类型,即使允许对原语本身进行强制转换 异常stacktr

我有一个错误代码

public int part(Object key) {   
    long clientId = (long) key;
    ...
}
以下是错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

不确定它引发异常的原因。

正如注释中所解释的,Java不允许将一种原语包装类型强制转换为另一种原语类型,即使允许对原语本身进行强制转换

异常stacktrace显示键参数是整数对象。如果是这样,只需使用Integer专门为这种类型的转换创建的方法:

long clientId = ((Number) key).longValue();

您最好确保键始终是一个数字对象,并且不为null,这样才能工作。在调用此方法之前,您可能需要测试null。

您不能将
整数
转换为
,即使您可以从
int
转换为
。这将对您有用:

Long clientId = new Long(key)
如果整数为空,则引发NPE。不过,我会让您自行处理错误。:)

或者,您可以使用:

Long clientId = Long.valueOf(key.longValue());

java.lang.Integer
无法转换为
java.lang.Long
。感谢您使用气垫船。我被绑了一会儿。