|
|
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Есть абстрактный класс A у него есть конкретные потомки A1 A2 A3 у клиента есть массив ссылок на A (соответственно там могут быть A1 A2 A3) Я хочу произвести действия только над A1(например) Просто слышал, что instanceOf - очень плохо использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:07:43 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
instanceof зачастую это затычка, на месте которой лучше использовать полиморфизм (на то много причин, если очень нужно, можно попробовать перечислить). Решается созданием метода в A, и соответствующей его реализацией-переопределением в A1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:35:37 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Добрый день, redwhite90! > Есть абстрактный класс A > у него есть конкретные потомки A1 A2 A3 > у клиента есть массив ссылок на A (соответственно там могут быть A1 A2 A3) > Я хочу произвести действия только над A1(например) Примерно так :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:44:10 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90, obj.getClass()==A1.class A1.class.isInstance(obj) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:44:27 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90Я хочу произвести действия только над A1(например) по архитектуре) http://www.sql.ru/forum/actualthread.aspx?tid=930725&pg=-1&hl=%f2%e8%ef%20%ea%eb%e0%f1%f1%e0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:49:47 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 19:28:09 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
GKS_Samara, Не понял вашей идеи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:40:37 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, У меня есть метод включить(абстрактный). а я хочу чтобы у меня была возможность включить только приборы класса A1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:42:51 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90Blazkowicz, У меня есть метод включить(абстрактный). а я хочу чтобы у меня была возможность включить только приборы класса A1 На абстрактном примере тут можно долго спорить. Раскрывайте конкретику. Если у вас есть метод "включения". И "включать" можно только A1 из списка экземпляров А. То логичный вопрос, откуда вообще взялся список всего насвете, когда нужны только А1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:49:07 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Petro123, не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:50:26 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, есть класс прибор(абстрактный) приборы делятся по категориям(наследуются от прибора).(световые, тепловые....) ну вот и есть желание одним движением включить все световые или тепловые, то есть нужна проверка на принадлежность классу. я реализовал через Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:53:14 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
немножко команду напоминает внешне....но думаю слишком уж тут ее использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:54:42 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90есть класс прибор(абстрактный) приборы делятся по категориям(наследуются от прибора).(световые, тепловые....) Где есть? redwhite90ну вот и есть желание одним движением включить все световые или тепловые, то есть нужна проверка на принадлежность классу. Не обязательно. Откуда берутся остальные приборы? redwhite90.getClass().getName() Без конкретики разговор ни о чем. Откуда приборы. Что такое "включить". Никто кроме вас не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:59:09 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90немножко команду напоминает внешне....но думаю слишком уж тут ее использовать Команда нужна чтобы отделить отправителя и получателя и сделать их максимально независимыми. У вас такая задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 23:59:50 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90Petro123, не понял там конкретный пример из жизни - выделить Особый класс из списка. Так ведь? Изначально, нет смысла пихать ВСЕ в ОДИН список "массив ссылок на A (соответственно там могут быть A1 A2 A3)" чтобы потом ВЫДЕЛЯТЬ и ПРОВЕРЯТЬ кого то по его ФИО. Так понятно? - Сделай на клиенте 3 списка, чем использовать RTTI. Это ответ в лоб. Так понятно? Тебе сказали - нужна конкретика. Иначе = говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 00:06:42 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Все приборы(световые, тепловые....) наследуются от абстрактного прибора все приборы хранятся в массиве типа прибор(абстрактный) Как сделать так, чтобы пройдясь по массиву можно было запустить только один из предков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 00:08:55 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Petro123, Ну тогда надо делать три цикла или какой то композитный итератор, чтобы прогуляться по массиву, ради одного использования наверное оно того не стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 00:12:26 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90Petro123, Ну тогда надо делать три цикла или какой то композитный итератор, чтобы прогуляться по массиву, ради одного использования наверное оно того не стоит Ну, если оно правда одно. То, да. Сделать и забыть. Если проект ещё годы развивать. То стоит подумать. И конечно же гетерогенная коллекция всегда плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 00:27:25 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Добрый день, redwhite90! > есть класс прибор(абстрактный) > приборы делятся по категориям(наследуются от прибора).(световые, > тепловые....) Код: sql 1. 2. 3. 4. 5. > ну вот и есть желание одним движением включить все световые или > тепловые, то есть нужна проверка на принадлежность классу. Код: sql 1. 2. 3. > .getClass().getName() Очень небезопасно к изменениям. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 09:25:51 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
redwhite90Есть абстрактный класс A у него есть конкретные потомки A1 A2 A3 у клиента есть массив ссылок на A (соответственно там могут быть A1 A2 A3) Я хочу произвести действия только над A1(например) Просто слышал, что instanceOf - очень плохо использовать Тут явно паттерн visitor, как и указал pasha701. Примерно такой клиентский код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 10:42:41 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
ivanraredwhite90Есть абстрактный класс A у него есть конкретные потомки A1 A2 A3 у клиента есть массив ссылок на A (соответственно там могут быть A1 A2 A3) Я хочу произвести действия только над A1(например) Просто слышал, что instanceOf - очень плохо использовать Тут явно паттерн visitor, как и указал pasha701. Примерно такой клиентский код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Работать не будет, doSomething(A value) будет всегда вызываться. Вот этого метода doSomething(A value) и не должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 10:48:01 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 10:49:03 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
Blazkowiczinstanceof зачастую это затычка, на месте которой лучше использовать полиморфизм (на то много причин, если очень нужно, можно попробовать перечислить).очень нужно, взял блокнот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 11:39:14 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
0FDРаботать не будет, doSomething(A value) будет всегда вызываться. Вот этого метода doSomething(A value) и не должно быть. Согласен, написал чересчур коротко и как следствие неточно. Вот рабочий пример Код: 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. Весь фокус в перегрузке методов в Visitor и переопределении accept в нужных классах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 11:59:05 |
|
||
|
Какие альтернативы есть у instanceOf
|
|||
|---|---|---|---|
|
#18+
ivanra, Визитор не убирает необходимость проверки особого класса или объекта. Он просто убирает все проверки в лапше-коде внутрь одного класса. Т.е решений всего 2. Либо особые флажки в модели либо RTTI IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 12:19:11 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=245&tid=2129994]: |
0ms |
get settings: |
13ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
54ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
100ms |
get tp. blocked users: |
3ms |
| others: | 358ms |
| total: | 595ms |

| 0 / 0 |
