Метод удаленного уведомления вызывается дважды

Поскольку вы используете lambdas, вы также можете воспользоваться другими функциями Java 8, например потоками.

Например, IntStream:

Последовательность примитивные значения элементов, поддерживающие последовательные и параллельные агрегированные операции. Это int-примитивная специализация Stream.

может использоваться для замены цикла for:

IntStream.range(0,10).forEach(i->{...});

, поэтому теперь у вас есть индекс, который можно использовать для ваша цель:

IntStream.range(0,10)
         .forEach(i->button[i].setOnAction(ea->button[i].setDisable(true)));

Также вы можете сгенерировать поток из массива:

 Stream.of(button).forEach(btn->{...});

В этом случае у вас не будет индекса, так как @shmosel предлагает, вы можете использовать источник события:

Stream.of(button)
          .forEach(btn->btn.setOnAction(ea->((Button)ea.getSource()).setDisable(true)));    

EDIT

Как указывает @James_D, здесь нет необходимости понижать прогноз:

Stream.of(button)
      .forEach(btn->btn.setOnAction(ea->btn.setDisable(true)));

В обоих случаях вы также можете воспользоваться параллельными операциями:

IntStream.range(0,10).parallel()
         .forEach(i->button[i].setOnAction(ea->button[i].setDisable(true)));

Stream.of(button).parallel()
          .forEach(btn->btn.setOnAction(ea->btn.setDisable(true)));
13
задан Alex 14 December 2013 в 07:54
поделиться