|
|
|
Тип объектов в коллекции, как узнать до попытки кастовать в массив с заданным типом?
|
|||
|---|---|---|---|
|
#18+
Есть у меня UI компонент, который через dragAndDrop может принимать 2 типа объектов, которые на него "бросаются" пользователем. Это, или Контрагент, или Продукт, а сам принимающий объект это Группа товаров. В примерах ДропХендлера получаем вот такой вот код от всех тех объектов, которые на него бросили. Карявенько я выражаюсь, но, надеюсь суть ясна :) Код: java 1. Дак вот эта коллекция может быть 2-х (пока и здесь только 2-х) типов. Либо это Product либо Contractor Есть ли возможность узнать заранее, до попытки преобразовать коллекцию в массив или лист объектов, его тип, ну чтобы лишний раз не писать трай или еще что-то типа условий. А еще, недавно тут напугали меня тем, что instance of есть нехорошо и следовало бы избегать такого, это, конечно относится к объектам, но все же пишу про это здесь тоже :) Хотя мне на производительность пока фиолетово, надо бы реализовать функционал, в требованиях про скорость ничего нет. Но тем не менее, хотелось бы сразу красиво попытаться сделать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 10:30 |
|
||
|
Тип объектов в коллекции, как узнать до попытки кастовать в массив с заданным типом?
|
|||
|---|---|---|---|
|
#18+
п.с. условие какое-то, конечно, придется писать, все-равно, но хотелось бы после проверки и до преобразования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 10:32 |
|
||
|
Тип объектов в коллекции, как узнать до попытки кастовать в массив с заданным типом?
|
|||
|---|---|---|---|
|
#18+
В принципе можно сделать так: Код: java 1. 2. 3. и потом проверять коллекцию на isEmpty и брать элемент с индексом 0 и далее через instanceof к какому типу относится объект и уже оттуда плясать, но.. верно ли такое решение, кашерно ли? :) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 10:54 |
|
||
|
Тип объектов в коллекции, как узнать до попытки кастовать в массив с заданным типом?
|
|||
|---|---|---|---|
|
#18+
NixicЕсть у меня UI компонент, который через dragAndDrop может принимать 2 типа объектов, которые на него "бросаются" пользователем. Ты нас всех (читающих топик) ставишь в глупое положение. Библиотек поддержки UI в Java содержится большое количество (Swing/FX/GWT) и надо тебе задавать встречный вопрос об этом. От результатат зависит многое - даже производительность рефлексии. А еще, недавно тут напугали меня тем, что instance of есть нехорошо и следовало бы избегать такого, это, конечно относится к объектам, но все же пишу про это здесь тоже :) Полу-правда хуже чем ложь. Зачастую в java, проверка типа через instance-of - это единственный и верный способ проверки корректности при даункастинге. Все прочие советчики которые советуют не использовать instance-of должны дать как минимум альтернативный вариант и (!) дать ему характеристику в разрезе данного ЯП и алгоритма задачи. Особенно в части когда у нас не просто даункастинг а выбор двух альтернатив или двух кейсов производного класса. Производительность - это хардкор и отдельная тема и о ней имеет смысл говорить только тогда когда у вас high-load и вы делаете 100500 кастингов в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 21:12 |
|
||
|
Тип объектов в коллекции, как узнать до попытки кастовать в массив с заданным типом?
|
|||
|---|---|---|---|
|
#18+
Nixicкашерно ли? :)Можно избежать целого каскада instanceof уменьшив до одного! Но тогда придется заимплементить паттерн Visitor и запилить все это дело совместно со Stream API . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 22:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39428068&tid=2123033]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 367ms |

| 0 / 0 |
