Directorio de artículos
1. Interfaz funcional
- Una interfaz que contiene solo un método abstracto se denomina interfaz funcional.
- Y puede usar expresiones lambda para crear objetos de esta interfaz,
- Puede usar la anotación @FunctionalInterface en cualquier interfaz funcional para detectar si se ajusta a una interfaz funcional.
- Al mismo tiempo, javac también incluirá una declaración que indique si la interfaz se ajusta a la interfaz funcional.
1. Interfaz funcional personalizada
@FunctionalInterface
public interface MyNuber{
public double getValue();
}
Dos, expresión lambda
Las expresiones lambda solo se pueden usar en interfaces funcionales
// 普通方法:实现一个函数式接口
Runnable r1 = new Runnable(){
@Override
public void run(){
System.out.println("我爱北京天安门");
}
};
// JDK8新特性:无参数
Runnable r2 = ()->{
System.out.println("我爱北京天安门");};
// JDK8新特性:有参数
Runnable r2 = (String str)->{
System.out.println(str);};
3. Corriente
// filter 过滤流
public void testFilter() {
Integer[] arr = new Integer[]{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 输出:4 5 6 7
Arrays.stream(arr).filter(x -> x > 3 && x < 8).forEach(System.out::println);
}
// map 转换流
public void testMap() {
String[] arr = new String[]{
"yes", "YES", "no", "NO"};
// 输出:yes yes no no
Arrays.stream(arr).map(x -> x.toLowerCase()).forEach(System.out::println);
}
4. Opcional
总结概述
- Optional.of(T t) : Crear una instancia opcional
- Optional.empty() : crea una instancia opcional vacía
- Optional.ofNullable(T t): si t no es nulo, cree una instancia opcional; de lo contrario, cree una instancia vacía
- isPresent() : determina si contiene un valor
- orElse(T t) : Si el objeto que llama contiene un valor, devolver ese valor, de lo contrario devolver t
- orElseGet(Proveedor s): si el objeto que llama contiene un valor, devuelve el valor; de lo contrario, devuelve el valor obtenido por s
使用示例
// 创建optional对象,一般用ofNullable()而不用of()
Optional<String> emptyOpt = Optional.empty();
Optional<String> notNullOpt = Optional.of(str);
Optional<String> nullableOpt = Optional.ofNullable(str);
工作实例
Optional<User> userOptional = new LambdaQueryChainWrapper<>(userMapper)
.eq(User::getToken,userToken)
.oneOpt();