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

How to convert object to long data type java

我的代码出错了?

public int part(Object key) {   
    long clientId = (long) key;
    ...
}

错误如下:

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

不确定为什么会抛出异常。

正如评论中所解释的那样,Java 不允许将一种基元包装器类型转换为另一种基元类型,即使在基元本身上允许转换也是如此。

您的异常堆栈跟踪显示关键参数是一个 Integer 对象。如果是这样,那么只需使用专门为此类转换创建的 Integer 方法:

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

您最好确保密钥始终 是一个 Number 对象并且不为 null 才能正常工作。您可能需要在调用此方法之前测试 null。

您不能将 Integer 转换为 Long,即使您可以将 int 转换为 long。这对你有用:

Long clientId = new Long(key)

如果 Integer 为 null,则抛出 NPE。不过,我会将错误处理留给您。 :)

或者,您可以使用:

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