Java - приведение объекта к классу ByteArrayEntity (Android) ClassCastException - PullRequest
0 голосов
/ 25 марта 2011

У меня есть 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, мне было интересно, если кто-нибудь мог бы объяснить это?Время переопределить это полностью, так что любые хаки или обходные пути будут оценены.Я работаю с Android 2.2

Вся цель - взять изображение с камеры Android, затем setEntity моего HttpRequest до ByteArrayEntity и POSTмое изображение на сервер, где это затем обрабатывается.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Вместо того, чтобы передавать Object[] и затем приводить на основе позиции в массиве, почему бы просто не передать bean-компонент?

public class MyBean {
    private ByteArrayEntity myByteArrayEntity;
    private String someString;

    // getters and setters
}

Нет необходимости в приведении и гораздо проще поддерживать / расширять.

0 голосов
/ 25 марта 2011

Вы можете использовать другую параметризацию типа AsyncTask, чтобы вам не приходилось приводить. Если вы используете анонимный класс, тогда:

new ArrayTask<ByteArrayEntity, Void, HttpResponse>() {
    ...

Так что вы можете сделать:

@Override
protected HttpResponse doInBackground(ByteArrayEntity... byteArrays) {
    ...
    dataPhoto = byteArrays[2];
    ...

если ваши аргументы действительно предназначены для типа ByteArrayEntity.

...