Supplier提供者,跟Consumer类相反,Supplier类用于提供对象,它只有一个get方法,是一个抽象方法,需要编程者自定义想要返回的对象。
Consumer消费者,意即通过传递进一个参数来对参数进行操作。 accept方法用来对输入的参数进行自定义操作,因为是个抽象方法,所以需要实例化对象的时候进行Override
正常式写法:
import java.util.function.Consumer; import java.util.function.Supplier; public class Test { public static void main(String args[]){ new Test().printSupplier(new Supplier<Integer>() { @Override public Integer get() { return 666; } }); new Test().printComsumer(new Consumer<Integer>() { @Override public void accept(Integer integer) { integer= integer+9999; System.out.println(integer); } }); } public void printSupplier(Supplier<Integer> supplier){System.out.println(supplier.get());} public void printComsumer(Consumer<Integer> consumer){ int a=1; consumer.accept(a); } }打印结果:
666 10000
函数式编程写法
public class Test { public static void main(String args[]){ new Test().printSupplier(()->{return 666;}); new Test().printComsumer((Integer integer)->{System.out.println(integer+999);}); //new Test().printComsumer((integer)->{System.out.println(integer+999);}); } public void printSupplier(Supplier<Integer> supplier){System.out.println(supplier.get());} public void printComsumer(Consumer<Integer> consumer){ int a=1; consumer.accept(a); } }使用时需要引入jar包
<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>findbugs</artifactId> <version>3.0.1</version> </dependency>转自: https://blog.csdn.net/weixin_34343308/article/details/91432758
可标注于作用于方法参数,方法返回值,成员变量,属性上
例如
public interface Hi { @Nullable public Integer b(); }
public class K implements Hi { @Override public Integer b() { System.out.println(“haha”); return null; } }