如何将对象转换为长数据类型 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());
我的代码出错了?
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());