Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 3

Ошибка приведения типов

20.02.2015, 21:21. Показов 1185. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите исправить ошибку, не могу понять в чем дело.

Не хочет обходить список ArrayList<double[]> list, бросает ClassCastException. Метод list.get(0) так же кидает ClassCastException

Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void drawRoutes(ArrayList<String> routes) {
        if (routes.isEmpty()) return;
        for (int i = 0; i < routes.size(); i++) {
            PolylineOptions polylineOptions = new PolylineOptions();
            ArrayList<double[]> list = TransportRoutes.getRoutes(tag, routes).get(i);
            for (double[] points : list) {  // На этой строчке ClassCastException
                map.addPolyline(polylineOptions
                        .add(new LatLng(points[0], points[1]))
                        .color(color)
                        .width(POLY_LINE_WIDTH));
            }
        }
    }
Как берется список:

вот метод getRoutes

Java
1
2
3
4
5
6
7
public static ArrayList<ArrayList<double[]>> getRoutes(String tag, ArrayList<String> numbers) {
        ArrayList<ArrayList<double[]>> routes = new ArrayList<>();
        for (String number : numbers) {
            routes.add(sRoutesHashMap.get(tag).get(number));
        }
        return routes;
    }
sRoutesHashMap это HashMap<String, HashMap<String, ArrayList<double[]>>> он забирается так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    protected static <T> T getSmth(Context context, String url) {
        T data = null;
        JSONParser jsonParser = new JSONParser(context);
        String json;
        ObjectMapper mapper = new ObjectMapper();
        try {
            json = jsonParser.execute(url).get();
            if (json != null) {
                data = mapper.readValue(json, new TypeReference<T>() {});
            } else return null;
        } catch (InterruptedException | ExecutionException | IOException e) {
            e.printStackTrace();
        }
        return data;
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2015, 21:21
Ответы с готовыми решениями:

Ошибка приведения типов
я чайник в программировании и тем более на java. Программа считает интеграл ln(2+sin(x)) с помощью составной формулы прямоугольников ...

Ошибка приведения типов
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; int vvod(int *a,int*b,int i) { for(i=0; i&lt;15; i++) ...

Ошибка приведения типов
Здраствуйте. Этот код при компилировании в VS 2008, выдает 2 ошибки типа - error C2440: '=' : cannot convert from 'int (__cdecl...

4
 Аватар для snajper_ro
116 / 101 / 52
Регистрация: 14.09.2011
Сообщений: 696
Записей в блоге: 1
20.02.2015, 22:12
проверьте что вы засовывайте туда.
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 3
20.02.2015, 23:26  [ТС]
Когда я использовал вот это метод все работало нормально:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void getAllRoutes(Context context) {
        String routesJson = sSPData.getString(sCity + ROUTES, EMPTY);
        ObjectMapper mapper = new ObjectMapper();
            JSONParser jsonParser = new JSONParser();
            try {
                routesJson = jsonParser.execute(URL + sCity + SEPARATOR + ROUTES).get().get(0);
            } catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
            }
        }
        try {
            sRoutesHashMap = mapper.readValue(routesJson,
                    new TypeReference<HashMap<String, HashMap<String, ArrayList<double[]>>>>() {});
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
В смысле напрямую указывал тип в TypeReference. И все прекрасно приводилось к этому типу

Но из-за дженериков дабл вот какой-то не дабл получился в итоге.
0
 Аватар для ne2win
206 / 206 / 71
Регистрация: 25.02.2014
Сообщений: 569
21.02.2015, 08:27
Цитата Сообщение от zhukovme Посмотреть сообщение
В смысле напрямую указывал тип в TypeReference. И все прекрасно приводилось к этому типу
Может в этом и дело.
Цитата Сообщение от zhukovme Посмотреть сообщение
Но из-за дженериков дабл вот какой-то не дабл получился в итоге.
У вас метод getSmth странный, чем вы параметризуете new TypeReference<T>()? Object'ом?
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 3
21.02.2015, 14:31  [ТС]
Цитата Сообщение от Kochmarik Посмотреть сообщение
У вас метод getSmth странный, чем вы параметризуете new TypeReference<T>()? Object'ом?
Получается, что да. Тогда буду писать для каждого типа свой метод.
Всем спасибо.

Добавлено через 33 минуты
Что-то я не сразу сообразил, что можно TypeReference передать Поправил, теперь все ок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2015, 14:31
Помогаю со студенческими работами здесь

Списки: ошибка приведения типов
Подскажите что я сделал не так при переводе кода C# на VB.net ? ИЗ List&lt;HatchBoundaryPath&gt; boundary = new...

Ошибка явного приведения типов
Всем привет В интерфейсе public interface IEmployeeRepository { List&lt;Employee&gt; GetAll(); ...

Двумерный массив - ошибка приведения типов
Приветсвую. Столкнулся с такой проблемой, точнее не с проблемой а с вопросом. допустим: имеется функция Function; void Function( double...

Ошибка приведения типов при работе с БД
Добрый день. Делаю пример из книги, выдает такую ошибку: в файле ProductsControllers: namespace WebUi.Controllers { ...

Ошибка приведения типов в MSVS 2008
for (AuraEffectList::const_iterator i......... ............. if (i==((AuraEffectList::const_iterator)NULL)) в линуксе компилируется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru