java中的Supplier和Consumer类以及函数式编程,@Nullable注解使用练习

mac2025-01-12  11

Supplier和Consumer

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

spring中的@Nullable注解

使用时需要引入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

可标注于作用于方法参数,方法返回值,成员变量,属性上

参数可为null

public static boolean isBlank(@Nullable final CharSequence cs) { return !StringUtils.hasText(cs); }

返回值可为null

@Nullable public static String getCookieVal(HttpServletRequest request, String name) { Cookie cookie = getCookie(request, name); return cookie != null ? cookie.getValue() : null; }

属性可为null

@Nullable private String msg;

例如

public interface Hi { @Nullable public Integer b(); }

public class K implements Hi { @Override public Integer b() { System.out.println(“haha”); return null; } }

最新回复(0)