Я пишу этот код, но я не знаю, почему он компилируется.
UnaryOperator принимает аргумент определенного типа и возвращает результат с тем же типом своего аргумента.
Мой вопрос: если я поставлю if-statement
с возвращением null
, не будет ли ошибка компилятора?
null
не является ли тип аргумента его (в моем случае это Кукла)?
Может ли встроенный функциональный интерфейс (например, Consumer, UnaryOperator, Function) возвращать ноль вместо стандартного возврата?
Это мой код:
import java.util.function.*;
public class Doll {
private int layer;
public Doll(int layer) {
super();
this.layer = layer;
}
public static void open(UnaryOperator<Doll> task, Doll doll) {
while ((doll = task.apply(doll)) != null) {
System.out.println("X");
}
}
public static void main(String[] args) {
open(s -> {
if (s.layer <= 0)
return null;
else
return new Doll(s.layer--);
}, new Doll(5));
}
}
Большое спасибо!