реализация validateOrThrow - PullRequest
1 голос
/ 11 июня 2019

Я хочу добиться чего-то подобного функционально. Любая помощь?

public static Function<String[],Void> validateLength3 = (String[] input) -> {
   if(input.length != 3) 
       throw new Exception("length not equals 3");
}

Я ожидаю, что он ничего не вернет, если массив length == 3.

Else бросить Exception.

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

С вашим кодом есть две проблемы:

  1. * Для метода 1004 * apply() требуется возвращаемое значение.
  2. Function '* apply() метод не можетбросить проверенное исключение.

Вы можете использовать Consumer<String>, который вместо RuntimeException выдает:

public static Consumer<String[]> validateLength3 =
    (String[] input) -> { if(input.length != 3) throw new RuntimeException("length not equals 3");};
0 голосов
/ 11 июня 2019

Зачем вам нужна отдельная функция для проверки.В популярных библиотеках есть вспомогательные классы, которые уже делают то, что вам нужно.

Т.е. Предварительные условия В Google Guava

вы можете написать что-то вроде

Preconditions.checkState(input.length == 3, "length not equals 3");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...