public static Map<Double, String> labels = new HashMap<Double, String>();
for (int i=0; i<5; i++)
labels.put((double)i, "fdgsd");
Глупый вопрос, но мне не очевидно. Почему в этом примере требуется явное приведение int к double? Причем, double к Double приводит автоматически. Это наврняка было в предыдущих лекциях. Если кто поделится ссылкой на эту тему, буду благодарна.Anastasia Ilyushenko
34 уровень
Приведение типов
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас ПасинковSoftware Developer в ZipyMaster
13 августа 2018, 16:27решение
вы все верно написали: double к Double приводит автоматически
но в вашем случае мапа ждет Double, а вы ей суете примитивный инт)) вот она и не понимает что с ним делать :)
это вам не джаваскрипт (или другие языки программирования со слабой типизацией), где все можно автоматически привести ко всему))
но там у них свои проблемы: https://cs9.pikabu.ru/post_img/2016/09/15/7/147393909915812096.jpg
+2
Anastasia Ilyushenko
13 августа 2018, 16:36
Еще один вопрос. Почему в мапу нельзя запинуть примитивный тип?
Вот так: public static Map<double, String> labels = new HashMap<double, String>();
И если б можно было, то int привелся бы к double автоматически?
0
Стас ПасинковSoftware Developer в ZipyMaster
13 августа 2018, 16:39
потому что коллекции не работают с примитивными типами данных. коллекции умеют работать только с объектами. и это не только мапы, но и листы, и сеты и все остальное))
поэтому и придумали все эти типы-обертки для каждого из примитивных типов :)
если бы можно было - то наверное привелся бы, так как дабл - более "широкий" тип, чем инт (диапазон значений инта полностью вмещается в диапазон значений дабла)
+1
Anastasia Ilyushenko
13 августа 2018, 16:49
Типы-обертки придумали, чтобы помещать их в коллекцию? И все???0_o Можно же было резрешить коллекции примитивные типы принимать
0
Стас ПасинковSoftware Developer в ZipyMaster
14 августа 2018, 10:19
не только в коллекции, а всюду, где требуется работа с объектами.
задумайся о дженериках вообще. они же работают с объектами и классами. и в любом методе или классе, где используются дженерики - используются классы-обертки для примитивных типов, потому что мы не можем там использовать просто примитивы.
так что сфера их использования не только коллекции, но и любое место, где нужен объект :)
ну а еще в них всякие полезные методы есть :) типа Integer.parseInt(), все такое))
+2