|
|
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#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. Надо убрать рефлексию. Понятное дело, что Call это интерфейс. Мне надо вызвать все методы которые имплементирует подставленный класс. Вот интерфейс Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вопрос просто тупо вызвать все методы или есть еще варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 01:07:31 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
ErikI, Да, тупо вызывать все методы, а в чём дело-то ? Чем не нравится? Чем не нравится решение с Reflection ? Они правда разные будут, по Reflection ты все методы будешь всегда вызывать (все без параметров), а руками -- только указанные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 13:31:47 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
ErikI, У тебя кстати некоторые методы имеют другие сигнатуры. А так можно было бы объявить один интерфейс с одним методом и сделать много реализаций, положить их в массив или коллекцию, и в цикле вызывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 13:33:41 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
MasterZivА так можно было бы объявить один интерфейс с одним методом и сделать много реализаций, положить их в массив или коллекцию, и в цикле вызывать. В Java 8 есть какие-никакие ссылки на методы. Возможно их будет проще складироват в Map. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 13:43:37 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
Если тебя пугает то, что ты в твоем классе, который реализует этот интерфейс, будет много пустых ненужных методов, но которые как бы надо "реализовать" у себя, то попробуй паттерн Адаптер. В двух словах, он делает так, чтобы лишние методы перед глазами не маячили. И в твоем классе будет будут те методы, которые действительно надо реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 14:15:52 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
Так как все методы выглядят как акцессоры, то есть смысл их привести к именованию JavaBeans и получать значения через Introspector или Apache Commons Bean Utils. Та же рефлексия, но, возможно, более лаконичный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 14:20:00 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы. Буду думать над предложенными вариантами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:15:59 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
ErikIСпасибо за советы. Буду думать над предложенными вариантами. Я бы делал через BeanUtils. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:23:39 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
Маловато условий для решения. Кроме предложенных есть еще варианты статической и динамической кодогенерации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 18:14:04 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
ErikIСпасибо за советы. Буду думать над предложенными вариантами. Вот за чё мне нравятся Java программисты, так это что они над каждой хернёй думают. Тут не думать, тут делать надо. Java -- это грёбаный кроссплатформенный объектноориентированный Бейсик. Написал -- и забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 20:40:36 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
MasterZivВот за чё мне нравятся Java программисты, так это что они над каждой хернёй думают. Тут не думать, тут делать надо. Java -- это грёбаный кроссплатформенный объектноориентированный Бейсик. Написал -- и забыл. Клац-клац и в продакшн. Да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 20:45:27 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
MasterZivТут не думать, тут делать надо. Это никак цитата из какого-то анекдота? MasterZivJava -- это грёбаный кроссплатформенный объектноориентированный Бейсик. Написал -- и забыл. Если писать не думая, то забыть не дадут благодарные пользователи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 21:45:23 |
|
||
|
Красивое решение вместо рефлексии
|
|||
|---|---|---|---|
|
#18+
rfq, ну, он преувеличил)). Но в java действительно, очень много усложняют на пустом месте. Рефлексия (RTTI Delphi) нужна в очень ограниченном числе случаев Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 08:39:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38407172&tid=2128528]: |
0ms |
get settings: |
23ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
16ms |
get forum data: |
7ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 478ms |

| 0 / 0 |
