java:ClassCastException - [Ljava.lang.Long;无法强制转换为java.lang.Long

时间:2010-12-22 14:48:31

标签: java casting

我使用red5并使用IConnection类设置/获取属性,但这确实不相关。

'L'在java中意味着很长。所以0L是0型长而不是'0',它是0型整数。

以下错误消息中[Ljava.lang.Longjava.lang.Long之间的区别是什么:

stack trace: java.lang.ClassCastException: [Ljava.lang.Long; cannot be cast to java.lang.Long

更新

代码示例:

 static Long getLongAttribute(IConnection conn, String attribute) {
    Long result=null;
    try {
        if (!conn.hasAttribute(attribute))
            throw new Exception(attribute +  " - Long attribute not found!");
      result = conn.getLongAttribute(attribute); // <--- ERRROR ON THIS LINE
    } catch (Exception e) {
        _handleException(e);
    }
    return result;
}

4 个答案:

答案 0 :(得分:21)

第一个对象是Long的数组,第二个只是Long。试试这个

    Long l = 1l;
    Long[] l2 = {};
    System.out.println(l.getClass());
    System.out.println(l2.getClass());

输出

class java.lang.Long
class [Ljava.lang.Long;

但我同意[L_class_;数组类型的表示非常混乱。我想知道它是怎么来的。

答案 1 :(得分:2)

您的代码尝试投放导致Long[] to Long

ClassCastException

答案 2 :(得分:1)

[Ljava.lang.Longjava.lang.Long s

的列表

编辑:如下所述,它是一个数组。对不起,我打字太快了......

答案 3 :(得分:1)

我的代码是

,我遇到了类似的问题

List<Object[]> rows = criteria.list();

但我的标准只有计数(*)投影,因此criteria.list()只返回List<Long>而不是List<Long[]>

我通过将其更改为

来解决它

List<Object> rows = criteria.list();