Необязательные Java для проверки входных параметров - PullRequest
2 голосов
/ 19 июня 2019

Я использую для проверки входных параметров с шаблоном Java, как это в верхней части метода:

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    if (file1 == null || file2 == null || file3 == null ||...) {
        throw new IllegalArgumentException();
    }
    if (another_param == null) {
        throw new NullPointerException();
    }
}

Тем не менее, я читал об опциях Java 8 и заметил, что мы могли бы сделать что-то вроде этого:

Optional.ofNullable(file1).orElseThrow(IllegalArgumentException::new);
Optional.ofNullable(file2).orElseThrow(IllegalArgumentException::new);
Optional.ofNullable(another_param).orElseThrow(NullPointerException::new);
...

Так что мой вопрос: есть ли какая-то обратная сторона в том, чтобы сделать это вторым способом, я чувствую, что это выглядит немного чище для меня.

Ответы [ 3 ]

9 голосов
/ 19 июня 2019

Для проверки ввода используйте Objects.requireNonNull вместо:

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    Objects.requireNonNull(file1);
    Objects.requireNonNull(file2, "custom message");   
}

Это более сжато, более четко сообщает намерение и не создает дополнительного Optional объекта.Это бросает NullPointerException, хотя.

1 голос
/ 19 июня 2019

Нет недостатка в том, чтобы делать это таким образом, и код работал бы нормально, но Optional был введен для другой цели. Например, вы можете использовать Optional в сигнатуре метода в своем интерфейсе, чтобы четко сообщить о своемклиентам, что значение, возвращаемое вашим методом, является «Необязательным». Таким образом, ваши клиенты не должны выполнять работу по угадыванию.

0 голосов
/ 19 июня 2019

Нет, нет недостатка в том, чтобы делать второй путь. Оба делают одно и то же, но по-разному. Optional - это новая функция, которая была добавлена ​​в Java 8.

...