| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Удивитиельная природа ArrayStoreException |
| Автор: Royan 27.4.2007, 10:58 | ||
| Вот здесь есть маленький примерчик http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ArrayStoreException.html Собственно я вообще не понимаю почему там возникает какое-то исключение, когда если написать так
никакого исключения нет и в помине. |
| Автор: kkorsakoff 27.4.2007, 11:44 | ||
смотрим пример
Object x[] = new String[3]; Создается массив из String с длиной равной 3. То что, используется ссылка на него как Object x[] ничего не меняет, фактически массив должен состоять только из строк x[0] = new Integer(0); Попытка положить Integer в этот массив. Вполне логично, что такая попытка должна окончиться неудачей |
| Автор: Royan 27.4.2007, 18:40 |
| Никакой логики не вижу. Ссылка она и есть ссылка. Java - это не type safe language. Почему должно валиться исключение в случае массива, но не в случае переменной? Не понятно. В общем эта тема к сведенью, поэтому не закрываю. Желающие приводите свои доводы. |
| Автор: RebornCrusader 28.4.2007, 01:37 | ||||||
Чтобы было понятнее, переименую переменную:
Всё логично, мы объявили ссылку наиболее общего типа, соответственно суём туда что угодно. Но с этой ссылкой мы и будем работать как с "просто объектом". Захотим использовать специфику String или Integer (обращаясь к членам или передавая как параметр), должны будем использовать cast. Теперь массив:
Если проводить полную аналогию с переменной, надо писать так:
Нет никакой ложки ;) |
| Автор: Royan 28.4.2007, 10:56 | ||
Позвольте, коллега, вопрос. Cколько типов ссылок в языке Java? |
| Автор: Kangaroo 28.4.2007, 11:50 |
| Почитай http://mindprod.com/jgloss/gotchas.html#ARRAYSTOREEXCEPTION |
| Автор: RebornCrusader 28.4.2007, 13:29 |
Не понял вопроса. Что подразумевается под словом "тип ссылки"? Если в контексте weak/soft, то это к теме не относится. Если нет... Я употреблял это словосочетание в смысле класса или интерфейса, но с вашим вопросом это никак не вяжется. Собственно, ссылка, данная Kangaroo, всё хорошо поясняет. Да и ещё кое-что, о чём я не задумывался ;) |
| Автор: Royan 28.4.2007, 15:36 | ||
Прошу прощения за тупеж
Если навести кристальную чистоту, то ясность проступает в следующем определении. Ссылки элементов массива объявляются типом, который используется для инициализации объекта массива. Kangaroo, Приведенная статья как раз не объясняет главного, что типы элементов массива объявляются как переменные с типом эквивалентным тому, что используется для инициализации массива. RebornCrusader, Я говорил о ссылках в их прямом смысле я ошибочно полагал что, подложенная свинья, именно в них |