|
|
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Spring Expression Language (SpEL) сравнивает объекты используя метод equals или '=='? Чем вызваны такие результаты(используется Spring Security method access)? Почему для аргументов Long вызывается .equals, а для объектов классаTestObject используется сравнение через '==' ? Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 12:08:03 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 12:32:02 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, так я там тоже самое спрашиваю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 12:33:51 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
http://stackoverflow.com/a/19456893 http://docs.spring.io/spring/docs/3.0.x/reference/expressions.html#d0e11934 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 12:41:17 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, и что это объясняет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 12:55:34 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmUsman, и что это объясняет?) Код: java 1. Будет false , т.к. здесь сравниваются ссылки , которые "указывают" на разные объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 13:34:19 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
UsmanrdmUsman, и что это объясняет?) Код: java 1. Будет false , т.к. здесь сравниваются ссылки , которые "указывают" на разные объекты. Мой вопрос из первого сообщения звучит как "Почему для аргументов Long вызывается .equals, а для объектов классаTestObject используется сравнение через '==' ?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 13:46:51 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Long one и Long two тоже разные объект (one != two), но почему то метод @PreAuthorize(" #one == #two ") не бросает AccessDeniedException, т.е. Long он сравнивает через equals(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 13:49:12 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmLong one и Long two тоже разные объект (one != two), но почему то метод @PreAuthorize(" #one == #two ") не бросает AccessDeniedException, т.е. Long он сравнивает через equals().В Long'е реализован интерфейс Comparable . Может из-за этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 13:57:38 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, не знаю) Вы утверждаете или предполагаете?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 14:03:05 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmUsman, не знаю) Вы утверждаете или предполагаете?)Утверждаю. Попробуйте реализовать этот самый интефейс в своем TestObject'е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 14:05:59 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
UsmanrdmUsman, не знаю) Вы утверждаете или предполагаете?)Утверждаю. Попробуйте реализовать этот самый интефейс в своем TestObject'е. Реализовал. Ничего не изменилось( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 14:19:21 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmUsmanпропущено... Утверждаю. Попробуйте реализовать этот самый интефейс в своем TestObject'е. Реализовал. Ничего не изменилось(Все дело в Unboxing . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 17:06:53 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmРеализовал. Ничего не изменилось( Для примера добавьте след. метод в TestObject: Код: java 1. 2. 3. А Spring EL будет выглядеть так: Код: java 1. 2. Работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 17:32:40 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
WGAВсе дело в Unboxing .+100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 17:36:02 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, так причем здесь getLong()? Я просто тогда буду сравнивать два объекта Long. Как видно из примера, Long SPEL сравнивает через equals(). Я же хочу понять, что SPEL одни объекты(как Long) сравнивает через equals, а другие по ссылке. Вариант с Unboxing не кажется мне правильным, так как я прямо в сигнатуре метода пишу Long, и с чего вдруг при записи Long a == Long b, будет происходить Unboxing? В первом сообщении я прямо сравниваю два Long'а и никакого Unboxing не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 17:47:35 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmВ первом сообщении я прямо сравниваю два Long'а и никакого Unboxing не происходит.Продолжил эксперименты... Сделал открытие для себя... Оказывается дело в интерфейсе Number... TestObject Код: 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. 28. 29. 30. 31. 32. 33. 34. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 17:55:11 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, как-то все запутано выходит. Вот например сравниваются два Long'а, причем можно точно сказать что не по ссылке, а метод equals() не вызывается (судя по дебагу). Хочется получить что-то вроде таблицы как и что SPEL сравнивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 18:01:45 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmUsman, как-то все запутано выходит.Вобщем, все сводится к тому, чтобы преобразовать значение объекта к примитивному типу: для численных - Number, для остальных - все вроде бы предсказуемо. Ну, или на крайняк, вводите спец. метод типа getLong() %)rdmХочется получить что-то вроде таблицы как и что SPEL сравнивает.Такого нигде не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 18:33:20 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Usman, т.е. другими словами если объект реализует интерфейс Number SPEL преобразует к примитиву и их сравнивает, иначе сравнение по ссылке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 18:42:36 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
rdmиначе сравнение по ссылке?Нет. Тогда произойдет java.lang.ClassCastException: org.project.TestObject cannot be cast to java.lang.Long. На счет сравнения по ссылке... я имел ввиду про разницу между оператором == и методом equals (не для примитивов). Но опять же, если взять строки (String) в EL сравнение нормально происходит без метода equals . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 18:59:43 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Это не оно? Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 19:02:23 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Alexander A. SakЭто не оно?Оно самое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 19:07:00 |
|
||
|
Проблема с equals и '==' в SPEL
|
|||
|---|---|---|---|
|
#18+
Alexander A. Sak, похоже на правду. Хм, т.е. метод equals вообще не при делах оказывается? Мне кажется спорное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 19:09:34 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=204&tid=2128379]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 331ms |

| 0 / 0 |
