|
|
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые форумчане. Разъясните, пожалуйста, как избежать ошибки в getter'e, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. если при работе с объектом b изменяется также поле field объекта a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2015, 12:26 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
aleapv, а что у вас не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2015, 18:28 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
DDiver, в eclipse автогенерация геттера всегда выполняется так, очень удобно когда полей много (30) и сторонняя библиотека требует геттеры и сеттеры. Я сейчас читаю Хорстманна. Он пишет, что такие геттеры могут привести к ошибкам. Предлагает в случаях когда можно случайно изменить объект по ссылке использовать метод clone(). В связи с тем, что он требует переопределения, т.к. осуществляет поверхностное копирование и по словам Хорстманна не очень популярен(в 5% классов основной библиотеки) я решил узнать как еще это можно решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2015, 19:15 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
aleapvОн пишет, что такие геттеры могут привести к ошибкам. Предлагает в случаях когда можно случайно изменить объект по ссылке использовать метод clone(). ну так когда появится ошибка то, тогда и думать надо, а так зачем искать решение проблемы которой у вас может быть и не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2015, 19:27 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Так вот b и есть поле field объекта а. Проверьте на : System.out.println(a == b); // ответ false System.out.println(a.equals(b)); // ответ false System.out.println(a.toString()); // .....@descriptor System.out.println(b.toString()); // ....java.lang.NullPointerException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2015, 19:32 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Предлагаю обсудить сабж. Который мы недавно перетирали на работе. Сеттер и геттер для date имеет копирующую природу в данном кейсе и связывающую (вариант который я закомментарил). Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 00:00 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
maytonПредлагаю обсудить сабж. Который мы недавно перетирали на работе. Сеттер и геттер для date имеет копирующую природу в данном кейсе и связывающую (вариант который я закомментарил). Геттеры/Сеттеры в java это костыль для эмуляции property. В вашем коде сеттер не нужен, как и само поле, т.к. всегда возвращается "new Date();" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 06:50 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Насчёт костыля я 100% согласен т.к. сам сторонник этой мысли уже давно. Ну суть моего месседжа в другом. Допустим (условия таковы) мы играм по правилам EJB/SpringBeans. И стоит задача - реализовать property date. Закомментаренный вариант - предлагает среда разработки ItellijIdea при использовании мастера создания пропертей. Другие среды разработки (я подозреваю) предложат тот-же вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 08:37 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
maytonЗакомментаренный вариант - предлагает среда разработки ItellijIdea при использовании мастера создания пропертей. Другие среды разработки (я подозреваю) предложат тот-же вариант. Ну шаблон для геттеров/сеттеров для любого типа один и тот же. Какой объект положили, такой и отдаем. Зачем создавать новый объект с данными от старого я честно говоря не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 08:57 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
maytonНасчёт костыля я 100% согласен т.к. сам сторонник этой мысли уже давно. Ну суть моего месседжа в другом. Допустим (условия таковы) мы играм по правилам EJB/SpringBeans. И стоит задача - реализовать property date. Закомментаренный вариант - предлагает среда разработки ItellijIdea при использовании мастера создания пропертей. Другие среды разработки (я подозреваю) предложат тот-же вариант. То есть автогенерация в общем случае только для простых типов и неизменяемых объектов? Почему среда разработки даже не намекает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 09:48 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
aleapv, Это основы Java. Надо понять что все объекты передаются по ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 11:09 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
aleapvmaytonНасчёт костыля я 100% согласен т.к. сам сторонник этой мысли уже давно. Ну суть моего месседжа в другом. Допустим (условия таковы) мы играм по правилам EJB/SpringBeans. И стоит задача - реализовать property date. Закомментаренный вариант - предлагает среда разработки ItellijIdea при использовании мастера создания пропертей. Другие среды разработки (я подозреваю) предложат тот-же вариант. То есть автогенерация в общем случае только для простых типов и неизменяемых объектов? Почему среда разработки даже не намекает? Это не ее задачи. Это достаточно глубокий анализ и IDE не может знать глубину замысла. Для нас вопрос возник лишь тогда когда плагин FindBug указал на vulnerability. Если мне не изменяет память. Да и сам по себе вопрос неоднозначен. Применительно к entity - совет будет один. К другому паттерну - возможно линкинг объектов это очень даже нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 13:39 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
mayton, спасибо за подробный ответ. Про FindBug для Java я и не знал даже. Уже не терпится протестить свои программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 14:20 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Не спеши. В попытке срочно следовать советам findbug ты можешь еще наплодить новых ошибок и антипаттернов. Хотя очевидные - исправить имеет смысл. У нас к примеру findbug эффективно находил ветки кода которые никогда не исполняются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2015, 14:35 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
mayton, maytonНе понимаешь? ага, я тоже не понимаю. Date - immutable (если не пользовать depricated), так что это лишнее засирание хипа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 23:42 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Это тебе домашнее задание, Пеньков. 1)Найти, где описано про иммутабельность java.util.Date. 2)Установить плагин FindBug и почитать его рекомендации касаемо закомментаренного кода FuckenEntity 3)Придумать кейсы когда эта уязвимость воспроизводится. Всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 00:37 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
mayton, да, я поглядел там setTime anyway, я бы просто использовал long - решает все проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 12:12 |
|
||
|
Ошибка getter'a
|
|||
|---|---|---|---|
|
#18+
Для тех кто катается на восьмёрке есть immutable сущность LocalDateTime http://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html Насчёт long - не возражаю. Это даже экономит память на сборке мусора. Но это (для наших проектов) потребует переписывания значительной части кода. Где семантика Date должна быть перенесена в длинное целое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 12:20 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38886060&tid=2125758]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 437ms |

| 0 / 0 |
