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

时间:2016-11-01 19:01:13

标签: 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

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

2 个答案:

答案 0 :(得分:5)

正如评论中所解释的那样,Java不允许将一个原始包装类型转换为另一种类型的基元,即使基元本身允许转换。

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

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

您最好确定密钥始终是一个Number对象,并且该密钥不为null。在调用此方法之前,您可能需要测试null。

答案 1 :(得分:1)

即使您可以从Integer转换为Long,也无法将int投射到long。这对你有用:

Long clientId = new Long(key)

如果Integer为null,则抛出NPE。我会把错误处理留给你。 :)

或者,您可以使用:

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