Nuevas características de JDK8, registro de puntos de conocimiento de uso común

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

Supongo que te gusta

Origin blog.csdn.net/m0_46638350/article/details/131027108
Recomendado
Clasificación