java8 `Numeric BinaryOperators`实例|功能接口教程

60 阅读1分钟

通过实例学习java8中的Numeric BinaryOperators 类。

java.util.function 包中定义了原始的消费者功能接口。

它只有一个抽象方法,接受对象值和其他数字值,结果是什么都没有。

它像BiConsumer 接口一样接受两个值作为输入。

所有的函数式接口都是用lambda表达式或方法引用来作为变量分配的。

你可以查看我的相关帖子。

java8中的ObjIntConsumer类

java.util.function.ObjIntConsumer 是一个函数式接口。

它有一个抽象的方法。 accept(T t, integer value)需要两个参数
t是一个对象,value是一个整数。

ObjIntConsumer方法引用示例

方法引用是用double colon 操作符声明和调用的。

它被分配了Consumer ,用两个参数调用accept() 方法,并且不返回任何东西。

import java.util.function.ObjIntConsumer;
public class MethodReferenceExample {
    static void append(String str, int value) {
        System.out.println(str+value);
    }
    public static void main(String[] args) {
        ObjIntConsumer IntToDoubleFunction = MethodReferenceExample::append;
        IntToDoubleFunction.accept("Hello",4);
    }
}  

上述生成的代码的输出是

Hello4  

ObjIntConsumer Lambda表达式示例

这里通过传递两个参数声明了lambda表达式,并通过ObjIntConsumer 接口分配。

调用时接受Object和int值,不返回任何东西。

下面是一个ObjIntConsumer Lambda表达式的例子

import java.util.function.ObjDoubleConsumer;
public class Test {
    public static void main(String[] args)  throws Exception{
        ObjDoubleConsumer  objDoubleConsumer = ( v1 , v2 ) -> { System.out.println(v1 + " " +v2);};
        objDoubleConsumer.accept("object",1d);
    }
}


输出

  
test 1  

java中的ObjLongConsumer接口

java.util.function.ObjLongConsumer 是一个功能接口。

它有一个抽象的方法 -accept(Object, primitive value) ,接受对象和整数值作为输入,并且不返回任何结果。

import java.util.function.ObjLongConsumer;
public class Test {
    public static void main(String[] args)  throws Exception{
        ObjLongConsumer  objLongConsumer = ( v1 , v2 ) -> { System.out.println(v1 + " " +v2);};
        objLongConsumer.accept("object",4l);
    }
}

上述代码执行的输出是

object 4  

结论

通过实例学习对象原始消费者,使用lambda表达式和方法引用语法。