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

ufk*_*ufk 5 java casting

我使用IC5ction类使用red5和设置/获取属性,但这确实不相关.

'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
Run Code Online (Sandbox Code Playgroud)

更新

代码示例:

 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;
}
Run Code Online (Sandbox Code Playgroud)

Nik*_*bak 22

第一个对象是数组Long,第二个是Long.试试这个

    Long l = 1l;
    Long[] l2 = {};
    System.out.println(l.getClass());
    System.out.println(l2.getClass());
Run Code Online (Sandbox Code Playgroud)

产量

class java.lang.Long
class [Ljava.lang.Long;
Run Code Online (Sandbox Code Playgroud)

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

  • 表示形式是数组类的二进制类名称。它在JVM规范以及http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getName()中指定 (2认同)