![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Connie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
В примерах SUN нашел такой код
Код взят тут И хотя выдается предупреждение
Почему же в этом случае оно работает? Или же это предусмотренное отступление от объектной модели данных? Вроде String не примитивный тип? http://java.sun.com/docs/books/tutorial/ja.../datatypes.html Я знаю, что строки надо сравнивать используя somestring.equals(otherstring) |
||||
|
|||||
Platon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
возможно evt.getPropertyName() возвращает ссылку на константную строку, и при запуске программы "progress" и getPropertyName(), если getPropertyName() возвращает "progress", а не new String("progress"), то == или != будут работать.
Нет неправильно понял. Добавлено через 3 минуты и 48 секунд Хотя, как я заметил хорошим тоном является следующий код:
При формировании объекта PropertyChangeEvent также устанавливаем propertyName PropertyTest.PROP_NAME |
||||
|
|||||
Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
Platon, то есть константы сравнивать можно именно потому, что компилятор создаст не два экземпляра "progress", а один?
Если так, то понятно ![]()
![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Верно. Добавлено через 8 минут и 19 секунд Придется мириться и не плодить больше подобный код. В туториале подобный подход из-за того, что в SwingWorker так нехорошо сделали. |
|||
|
||||
Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
Тогда получается в обработчиках событий лучше использовать первый вариант, чем второй, т.к. сравнение указателей должно происходить быстрее, правильно?
Верно? Извините, что по всякой ерунде Вас достаю Это сообщение отредактировал(а) Connie - 12.10.2008, 14:51 |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
абсолютно верно |
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
||||
|
||||
Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
Вот давайте рассуждать
вначале создается константа private final static String MY_COMMAND = "start_doing"; Потом у какого то элемента создается SomeUnit.addActionListener(some_where); SomeUnit..setActionCommand(MY_COMMAND); Это будет означать передачу объекту SomeUnit ссылки на MY_COMMAND, которая потом и будет сравниваться на идентичность с сама с собой if (MY_COMMNAD==e.getActionCommand()) Вряд ли в этом экземпляре объекта будет создаваться копия объекта. Хотя вдруг будет? И если я правильно понимаю то, как даются адреса объектам, то неверное совпадение может быть лишь в случае ссылки указывающей на null. Разумеется если я забуду указать final, static то тогда возможны различные коллюзии. Но рассуждая так можно какое угодно ограничение придумать ![]() Это сообщение отредактировал(а) Connie - 12.10.2008, 20:48 |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Я полагаю, что может быть по-разному в разных реализациях JVM, хотя, возможно, это закреплено железно в спецификациях. Но в в JVM от Sun не создаются. НО если в официальном туториале они прибегают к подобного рода коду, то это можно считать обычной практикой.
непонятно о чем это. |
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
|
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Несмотря на то, что GUI с сериализацией сильно не дружат, пожалуй, придется согласиться.
Это сообщение отредактировал(а) Platon - 16.10.2008, 14:50 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |