Java 将对象[]强制转换为字节[]时出错

Java 将对象[]强制转换为字节[]时出错,java,object,casting,byte,Java,Object,Casting,Byte,我想从数据库apdf中读取,该数据库存储为BLOB,我想获取列表 session.beginTransaction(); 最终标准=session.createCriteria(MyClass.class); 标准。添加(限制。等式(“id”,id)); final ProjectionList ProjectionList=Projections.ProjectionList().add( 预测。房地产(“bdoc”); 标准:setProjection(投影列表); List=criteri

我想从数据库a
pdf
中读取,该数据库存储为
BLOB
,我想获取
列表

session.beginTransaction();
最终标准=session.createCriteria(MyClass.class);
标准。添加(限制。等式(“id”,id));
final ProjectionList ProjectionList=Projections.ProjectionList().add(
预测。房地产(“bdoc”);
标准:setProjection(投影列表);
List=criteria.List();
List listBytes=new ArrayList();
对于(对象[]项:列表){
添加((字节[])项[0]);
}
session.getTransaction().commit();
但是我在(Object[]item:list){

[ERROR][B不能强制转换为[Ljava.lang.Object;

我已经调试并从数据库中读取了数据:我的
List=criteria.List()
不是空的。
但是我不能从
列表
转换到
列表
。我做错了什么?请帮助我解决我的问题。

B不能转换到[Ljava.lang.Object


这意味着您确实获得了bytearray,并且您正在尝试将其转换为对象数组。

此问题是由于返回原始的
列表而导致的。因此,您可以编写导致
ClassCastException
的代码。如果列表类型正确,编译器将阻止此操作

正如另一个答案中所解释的,文本
[B不能转换为[Ljava.lang.Object
意味着
字节[]
正在转换为
对象[]
,这是不允许的

这意味着您的列表包含
byte[]
对象,您应该这样声明它:

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

由于
现在是一个
字节[]
,将
字节
强制转换为
字节[]
是不正确的。也许您需要删除数组索引
[0]

可能会从错误中得到帮助,因为列表似乎包含字节数组(即
[B
)。我编写了list list list=criterials.list();一切正常。谢谢!
List<byte[]> list = criteria.list();
listBytes.add((byte[]) item[0]);