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