Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HashMap - не понятное поведение, HashMap to String 
V
    Опции темы
inohodec
Дата 18.8.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: 2
Всего: 2



Абалдеть ... (с)

Ребята, объясните мне пожалуйста одну загадку smile
Сейчас столкнулся и у меня ушел час на то что бы понять в чем проблема, а ПОЧЕМУ это происходит ...

И так есть 

Код

private HashMap <Integer, String> reasonCodes = new HashMap <Integer, String> ();

public void setReasonCodes(int lineNumber, String reasonCodes) {
    this.reasonCodes.put(lineNumber, reasonCodes);
}


Сначала для затравки - как вы думаете this.reasonCodes это кто smile ? 
Ну и сам вопрос ПОЧЕМУ ?



PM MAIL   Вверх
Ortega
Дата 18.8.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



Осмелюсь предположить, что это - мап. 
Если компилятор (вдруг) считает, что это не так - можно попробовать переименовать параметр. 
В подобных случаях чаще всего - ошибка в программисте, а не в странной Яве (сам сколько раз попадался). 
А вообще, подобные совпадения имен - моветон. Были бы они хотя бы одного класса....
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
Platon
Дата 18.8.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



this.reasonCodes - это HashMap, почему? 
потому что ссылка this указывает на то, что reasonCodes не локальная переменная, а переменная объекта
PM MAIL ICQ   Вверх
inohodec
Дата 18.8.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: 2
Всего: 2



В том то и беда smile

this.reasonCodes - String !!!

И почему это так я понять не могу smile

ПС
Я и не грешу на Java, скорее всего нехватка знаний с моей стороны smile
PM MAIL   Вверх
Ortega
Дата 18.8.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



Это невозможно, потому что это невозможно. Переименуйте параметр и/или поле - и скорее всего, все станет ясно.
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
inohodec
Дата 18.8.2008, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: 2
Всего: 2



Я именно так и сделал, переименовал и все заработало
Но вопрос остался smile

Как такое невозможное возможно
PM MAIL   Вверх
Platon
Дата 18.8.2008, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Лично у меня всё работает: ни IDE, ни javac ничего не говорят. скопировал/вставил приведенный кусок.
PM MAIL ICQ   Вверх
inohodec
Дата 18.8.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: 2
Всего: 2



... Все спасибо, вот что значит много работать :(

Просто в дебагере - this.reasonCodes из this.reasonCodes.put(lineNumber, reasonCodes);
Виден как стринг, а я ожидал что будет показыватся как HashMap
Т.е. даже после 10 вставок, в дебагере я ничего не вижу ... просто стринг с новым значением
Хотя после вызова get функции,возвращает правильное значение (HashMap)

smile

Спасибо
PM MAIL   Вверх
Platon
Дата 18.8.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



А можно полностью класс, в котором ты работаешь?
PM MAIL ICQ   Вверх
Ortega
Дата 18.8.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



Кажись, я понял. inohodec, ты останавливался в дебаггере, смотрел в разделе variables и видел там String. Я угадал?

P.S. Кроме того, что такие совпадения моветон, они еще и на психику разрушающе действуют ;)
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
niasilil
Дата 19.8.2008, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(Ortega @ 18.8.2008,  20:13)
Это невозможно, потому что это невозможно. 

+1 
не верю. Давай кусок кода, номер jvm, на какой платформе... Хотя такого не бывает, хоть как называй, хоть уписайся и сделай кучу вложенных классов и назови все одинаково, компилятору пофиг как интерпретировать, у него своя четкая логика. И по этой логике такого быть не может. 
Убедите меня если я не прав. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
inohodec
Дата 19.8.2008, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: 2
Всего: 2



Со всеми согласен, и именно по тому что сам так думаю и возникли траблы
Т.е. все мои знания говорят что это не возможно, а глаза видят другое

Я вчера был сильно уставший smile и поэтому не совсем верно описал проблему
В дебагере, я вижу что это HashMap, тут он ведет себя вполне разумно
Но, когда я делаю Inspect (Eclipse) что бы посмотреть что внутри
Мне показывается только String, с последним значением
И на этом этапе нет никакой возможности узнать что уже внутри ...

А самое смешное smile
После перезагрузки компа(и сна), все работает замечательно, т.е. так как нужно smile

Наверное я что то начудил с именами, а потом по какой то причине Eclipse то ли не почистил кэш то ли ХЗ 
Или просто 23 часа за компом это слишком smile

Всем спасибо smile
PM MAIL   Вверх
niasilil
Дата 20.8.2008, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



В эклипсе периодически баги вылезают, не заморачивайся. Их ловить очень сложно, потому что воспроизвести практически невозможно. Так и живем. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
sergioK
Дата 28.8.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Цитата(inohodec @ 19.8.2008,  07:28)
Со всеми согласен, и именно по тому что сам так думаю и возникли траблы
Т.е. все мои знания говорят что это не возможно, а глаза видят другое

Я вчера был сильно уставший smile и поэтому не совсем верно описал проблему
В дебагере, я вижу что это HashMap, тут он ведет себя вполне разумно
Но, когда я делаю Inspect (Eclipse) что бы посмотреть что внутри
Мне показывается только String, с последним значением
И на этом этапе нет никакой возможности узнать что уже внутри ...

А самое смешное smile
После перезагрузки компа(и сна), все работает замечательно, т.е. так как нужно smile

Наверное я что то начудил с именами, а потом по какой то причине Eclipse то ли не почистил кэш то ли ХЗ 
Или просто 23 часа за компом это слишком smile

Всем спасибо smile

Иноходец ,
отдыхать чаще надо  smile 
потом как у string может быть метод put?  

Когда видишь такую лажу пользуй System.out.println  а еще лучше пиши в отдельный  файл ,
 дебагер  - не панацея от всех болезней , 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.