【发布时间】:2011-03-25 15:24:11
【问题描述】:
我有一个 ByteArrayEntity 如下:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
tempPic.compress(CompressFormat.PNG, 0, bos);
byte[] bitmapdata = bos.toByteArray();
photoByteArray = new ByteArrayEntity(bitmapdata);
tempPic 的类型为 android.graphics.Bitmap。
然后我要做的是使用 AsyncTask 发出请求,该请求接受 Objects 的数组,然后我将其转换为它们的各种类型。但是,稍后在尝试投射我的 ByteArrayEntity 时,我得到了一个ClassCastException,我想知道是否有人可以解释这个?
protected HttpResponse doInBackground(Object... httpRequest)
{
ByteArrayEntity dataPhoto = null;
// Further code
if(myCondition)
{
dataPhoto = (ByteArrayEntity)httpRequest[2];
}
}
我真的需要让它工作,但目前真的没有时间完全重新实现它,所以任何黑客或变通方法都将不胜感激。我正在使用 Android 2.2
整个目标是从 Android 相机拍摄图像,然后将我的 HttpRequest 的 setEntity 到 ByteArrayEntity 和 POST 我的图像到服务器,然后处理。
【问题讨论】:
-
你 100% 确定 httpRequest[2] 是一个 ByteArrayEntity 吗?我认为没有任何关于任何特定类的东西可以阻止对其进行转换。
-
我 100% 确定,我做了一个 httpRequest[2].getClass() 的 System.out.println,它输出“org.apache.http.entity.ByteArrayEntity”。这与我如何声明它有关吗?只是一个初始化为 null 的 ByteArrayEntity 类型的变量?我应该用空字节[]创建它的对象吗?
标签: android casting classcastexception