Кнопка должна быть доступна только в том случае, если всплывающее окно отсутствует

В контексте команды / предприятия / многоразовых классов:

Обычно разрабатывают классы без учета того, что клиенты могут принять в отношении класса. Если вы вернете поток, вы вернете потенциально бесконечный список, и клиенты должны рассматривать это как потенциально бесконечный список. Это нарушение безопасности кода и хороший вкус для любого другого класса или другого метода для запуска stream.collect(toList()) в потоке, который он не создал сам, слепо предположив, что он будет конечным. Если это был желательный шаблон кода, потоки должны иметь некоторый метод, например isFinite(), чтобы защищать от ошибочных предположений.

Хуже того, возвращение потока во избежание материализации одинаково плохо, потому что кажется слишком легким материализует поток с .collect(), то есть пока класс обслуживания избегает материализации, у класса клиента может возникнуть соблазн сделать это с высокой стоимостью, в частности, если вы постоянно возвращаете потоки в качестве стиля кода и больше не можете сказать, какой поток возвращается должны быть материализованы, а какие - нет. Классические интерфейсы, которые указывают на плохую материализацию, - это java.util.Iterator (хотя commons-lang определяет IteratorUtils.toList ()).

Поэтому я бы рекомендовал использовать любой метод не-сбора, только если вы хотите документировать своим клиентам, что результат может быть бесконечным или может быть непригоден для материализации.

То, что потоки более удобны для функционального программирования, не означает, что они должны быть предпочтительными, это означает, что JDK должен расширить его API-интерфейс коллекции, позволяющий выполнять те же операции, чтобы клиентам не приходилось называть collection.stream().....

Для домашних заданий, строго личных проектов или другого неиспользованного кода

From простая алгоритмическая перспектива, игнорируя стиль кода, читабельность или проблемы OO-Design, предпочитая Streams, как в принятом ответе, в порядке. Но я не вижу, как это можно сделать общей рекомендацией по StackOverflow

0
задан KalleP 13 July 2018 в 13:35
поделиться

1 ответ

Вы можете создать какой-то флаг isPopupVisible, а затем проверить его, когда вы нажимаете кнопку, если это true, тогда return, иначе выполните действие. Вы также должны установить этот флаг на true, если появится всплывающее окно и false, когда оно исчезнет.

0
ответ дан Vladimir Shirmanov 17 August 2018 в 12:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: