Java 8: элегантный способ проверки двух не нуль для 2 (или более) переменных - PullRequest
0 голосов
/ 26 июня 2018

Как это можно сделать в Java 8

if (var1 != null && var2!=null) {
     callMethod(var1,var2);
}

Я думал о таких, как это, но с двумя переменными:

Optional.ofNullable(var1).ifPresent(var1 -> callMethod(var1));

Как это сделать?

1 Ответ

0 голосов
/ 26 июня 2018

Ваш пример понятен и понятен, искать альтернативы бессмысленно. Как вы уже упоминали, Optional может переносить только одно значение.

Если вы хотите заменить несколько ненулевых проверок, вы можете создать структуру

Stream.of(var1, var2, var3, ...).allMatch(Objects::nonNull)

Это может быть включено во вспомогательный метод:

 boolean nonNull(Object arg){
   return arg!=null;
 }
 boolean nonNull(Object arg1, Object arg2){
   return arg1!=null && arg2 !=null;
 }
 ...
 boolean nonNull(Object... args){
   return Arrays.stream(args).allMatch(Objects::nonNull);
 }

Но для менее чем трех аргументов это не имеет смысла и хуже по производительности.

Сохраняйте код читабельным, а не причудливым. Короткий - это хорошо, короче - еще лучше.

...