Null en la interfaz funcional con diferente retorno tipo

Adryr83:

Escribo este código, pero no sé por qué se compila.

El UnaryOperator toma un argumento de tipo específico y devuelve el resultado con el mismo tipo de su argumento.

Mi pregunta: ¿si pongo una if-statementcon la vuelta null, no hay un error de compilación?

null No es el tipo de su argumento (en mi caso es la muñeca)?

¿Puede una interfaz integrada funcional (como Consumidor, UnaryOperator, Función) return null en lugar de su retorno estándar?

Este es mi código:

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));
    }
}

¡Muchas gracias!

Jacob G.:

Piénsalo de esta manera:

Doll d = null;

null es una referencia válida para cualquier objeto, y no es diferente para las interfaces funcionales.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=178456&siteId=1
Recomendado
Clasificación