我正在编写一些MVEL表达式"$input.get('RESULT').array()[1]"
,其中$input.get('RESULT')
返回一个ByteBuffer
,所以我正在使用array()
将其转换为数组,然后尝试获取索引1的值。其中,数组具有16个属性。
但是当Mvel执行此表达式时,我得到
java.lang.ClassCastException: [B cannot be cast to java.lang.Object
我正在使用以下代码
MVEL.executeExpression(statement, fieldContext.getContext(), fieldContext.getVariables());
我还编写了其他表达式,效果很好,我遇到了第一个字节的错误。
这里的任何帮助将不胜感激。
更新:
当我使用ByteBuffer
get方法时,出现以下错误,因此我想尝试一下array
。
java.lang.IllegalAccessError: tried to access class java.nio.HeapByteBuffer from class ASMAccessorImpl_2330495751530608772190
at ASMAccessorImpl_2330495751530608772190.getValue(Unknown Source)
at org.mvel2.optimizers.dynamic.DynamicGetAccessor.getValue(DynamicGetAccessor.java:79)
at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:108)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:86)
at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
at org.mvel2.MVEL.executeExpression(MVEL.java:922)`
答案 0 :(得分:0)
您不必使用byte[]
转换为array()
,就足够了
$input.get('RESULT').get(1)
根据ByteBuffer.get()
方法文档:
公共抽象字节get(int索引)
绝对获取方法。读取给定索引处的字节。