我使用red5并使用IConnection类设置/获取属性,但这确实不相关。
'L'在java中意味着很长。所以0L是0型长而不是'0',它是0型整数。
以下错误消息中[Ljava.lang.Long
和java.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;
}
答案 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.Long
是java.lang.Long
s
编辑:如下所述,它是一个数组。对不起,我打字太快了......
答案 3 :(得分:1)
我的代码是
,我遇到了类似的问题 List<Object[]> rows = criteria.list();
但我的标准只有计数(*)投影,因此criteria.list()
只返回List<Long>
而不是List<Long[]>
我通过将其更改为
来解决它 List<Object> rows = criteria.list();