代码之家  ›  专栏  ›  技术社区  ›  Sam

函数接口中有Null,返回的类型不同

  •  5
  • Sam  · 技术社区  · 7 年前

    UnaryOperator接受一个特定的类型参数,并返回具有相同类型参数的结果。

    if-statement 有了回报 null ,是否有编译器错误?

    无效的 它的论点的类型不是吗(在我的例子中是Doll)?

    内置函数接口(如Consumer、UnaryOperator、Function)是否可以返回null而不是其标准返回?

    这是我的密码:

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

    谢谢!

    2 回复  |  直到 7 年前
        1
  •  5
  •   Jacob G.    7 年前

    这样想:

    Doll d = null;
    

    null 对于任何对象都是有效的引用,对于函数接口也没有什么不同。

        2
  •  4
  •   Eran    7 年前

    内置功能接口没有什么特别之处。任何返回引用类型的方法都可以返回 null . 这包括函数接口方法的lambda表达式实现。