異なるタイプのリターンとの機能的なインターフェースでのNULL

Adryr83:

私はこのコードを書くが、それはコンパイルなぜ私は知りません。

UnaryOperatorは、特定の型の引数をとり、その引数の同じタイプの結果を返します。

私の質問:私は置けばif-statementリターンでnull、コンパイルエラーはありませんでしょうか?

null その引数の型ではありません(私の場合には人形がありますか)?

内蔵されたことができる機能のインターフェースはnullの代わりに、その標準リターン(消費者、UnaryOperator、機能など)?

これは私のコードです:

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

どうもありがとう!

ジェイコブG.:

それをこのように考えます:

Doll d = null;

null 任意のオブジェクトのための有効な参照であり、そして機能的インターフェイスの違いはありません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=178450&siteId=1