JAVA8函数之Supplier和Consumer接口使用理解

一.    Supplier接口


        顾名思义,这是一个供应商,提供者.就如一个工厂一样.该类的源码如下:

package java.util.function;
 
@FunctionalInterface
public interface Supplier<T> {
 
    T get();
}

该接口就一个抽象方法get方法,该接口在 JAVA8之函数式接口返回实例篇中第一个示例就是利用的该接口.不用传入任何参数,直接返回一个泛型T的实例.就如同无参构造一样.示例就不再重复写了
supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new
例子:


public class TestSupplier {
	private int age;
	
	TestSupplier(){
		System.out.println(age);
	}
	public static void main(String[] args) {
		//创建Supplier容器,声明为TestSupplier类型,此时并不会调用对象的构造方法,即不会创建对象
		Supplier<TestSupplier> sup= TestSupplier::new;
		System.out.println("--------");
		//调用get()方法,此时会调用对象的构造方法,即获得到真正对象
		sup.get();
		//每次get都会调用构造方法,即获取的对象不同
		sup.get();
	}
}



===结果===
0
0

根据代码和官方注释,我的个人理解:

1.supplier是个接口,有一个get()方法

2.语法 :

Supplier<TestSupplier> sup= TestSupplier::new;

3.每次调用get()方法时都会调用构造方法创建一个新对象。

 

二.    Consumer接口


        顾名思义,这是一个消费者,该类的源码如下:

package java.util.function;
 
import java.util.Objects;
 
@FunctionalInterface
public interface Consumer<T> {
 
    void accept(T t);
 
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}


      1.    accept方法
        该函数式接口的唯一的抽象方法,接收一个参数,没有返回值.
      2.    andThen方法
        在执行完调用者方法后再执行传入参数的方法.
      3.    实例

package com.yczuoxin.demo.consumer;
 
import java.util.function.Consumer;
 
public class ConsumerTest {
    public static void main(String[] args) {
        Consumer<Integer> consumer = (x) -> {
            int num = x * 2;
            System.out.println(num);
        };
        Consumer<Integer> consumer1 = (x) -> {
            int num = x * 3;
            System.out.println(num);
        };
        consumer.andThen(consumer1).accept(10);
    }
}

 输出结果为:

可以看出先将10传入consumer方法执行,然后再将10传入consumer2方法执行.


三.    总结


        这两个接口方法很少,但是实用性很强,并且可以看成是一对逆运算.一个作为生产工厂生产对象(Supplier),另一个作为消费者去消费对象(Consumer).

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值