![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| ShamanTrirukiy |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.4.2006 Где: Харьков Репутация: 3 Всего: 5 |
Не придумал куда запостить, так что пишу сюда.
Первый - прикол с типизацией(правда, надо написать Sun-у, может так задумано?)
консоль:
Минус тут в том, что присвоение происходит вполне нормально, а вот обращение к полю радует нас исключением По-моему, было бы логичней его получать уже при присвоении. Второй баг(стабилен в Eclipse3.2 в дебаггере, в других IDE не проверял):
консоль:
Правда мило? Вот, собственно, и всё, натыкался на другие баги, но они были только на моей машине, посему их не публикую. Может, кому-то это пригодится. Если кто-то знает ещё какие-то баги - пишите. Это сообщение отредактировал(а) ShamanTrirukiy - 31.5.2006, 18:57 |
||||||||
|
|||||||||
| Tirael |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 31.1.2006 Где: Москва Репутация: нет Всего: 7 |
Не понял ??? ты создаешь объект и обращаешся к его полю, которое объявлено как private. ? Естественно будет ошибка ..... Щас разберем второй примечик ..... Это сообщение отредактировал(а) Tirael - 31.5.2006, 19:16 --------------------
|
|||
|
||||
| s8e8r8g8e |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 12.5.2006 Репутация: 1 Всего: 1 |
- не очень то занимался генериками, но 1й.. скорее всего изза того что метод объявлен как получающий просто Test, а не Test<?> , по умочанию видимо параметры это Object, при передаче параметра в такую функцию параметризация тоже не учитывается, внутри ты обджекту присваиваешь строку, что нормально а потом пытаешься int присвоить строку.. логично что класскаст, едиственно это у меня почти на кофейной гуще(надо бы спеки покопать, что происходит если так метод написать
- про второе, в какой момент ошибка, при останове или продолжении?, я просто в Netbeans 5.0 попробовал и ничего такого не увидел, а сломать можно всё что угодно.. никто не мешает эклипсу здесь чтонибудь этакое сделать, главное понять что и насколько критично, т.е. чия больше заслуга.. сана или эклипса вот из дебаггера моего всё что вылезло:
Добавлено @ 19:17
не будет, ведь весь код в рамках одного класса, да и ошибка не о том.. |
||||||
|
|||||||
| ShamanTrirukiy |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.4.2006 Где: Харьков Репутация: 3 Всего: 5 |
Tirael, не хочется тебя расстраивать, класс имеет доступ не только к своим private-полям, но ещё и ко всем private-полям inner-классов. А если при попытке обращения к методу, к которому не доступа у тебя, во-первых не будет матюкаться компилятор, а во-вторых, вылетит ClassCastException - я тебе памятник поставлю и по-почте его перешлю. Просьба - перед тем, как что-то писать - ДУМАТЬ. В том то ж и дело, что ошибка не в этом!!! Ошибка в том, что поле заполняется НЕВЕРНЫМ значением, а ClassCastException вылетает только при обращении к этому полю. Упс. Не увидел пост s8e8r8g8e Добавлено @ 19:44 Именно. Просто пример показал, чтоб люди на подобное не наткнулись. А вот по-поводу баг или нет -
Это сообщение отредактировал(а) ShamanTrirukiy - 31.5.2006, 19:39 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это не минус, особенность работы генериков. Генерики существуют только на этапе компиляции, и соответсвенно все проверки тоже идут только на этапе компиляции. При чтении из поля ошибка вылетает, из-за того что поле на самом деле имеет тип Object и перед присвоением производится приведение. А при присвоении значения полю, никакого приведения типов не производится. Вообщем поведение такое же как в программе без генериков с явным приведением типов. Вообще от генериков будет толк только если при компиляции не было варнингов, а в данном случае они были. Рекомендую почитать Generics in the Java Programming Language - Gilad Bracha, этот документик можно поискать на Сановском сайте. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tirael |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 31.1.2006 Где: Москва Репутация: нет Всего: 7 |
--------------------
|
|||
|
||||
| allex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 5.9.2005 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |