Tecnología de carga diferida de Lambda
Cadena de empalme de código ordinario
Ejemplo de código
public class Demo01Logger {
public static void show(int i,String message)
{
if (i==1)
System.out.println(message);
}
public static void main(String[] args) {
String message1="Hello";
String message2="world";
String message3="world";
show(1,message1+message2+message3);
show(2,message1+message2+message3);
}
}
problema encontrado:
Encontré un problema de pérdida de rendimiento. Cuando
se llama al método show, el segundo parámetro que se pasa es una cadena empalmada. La
cadena se empalma antes del método show. En el
método show, si el nivel de registro no es 1,
no se devolverá el empalme. Después de la cuerda, entonces la cuerda se desperdició empalmando
Utilice la interfaz funcional lambda para realizar el empalme de código de cadena
Definir una interfaz funcional
Ventaja:
Use expresiones lambda como parámetros para pasar, simplemente pase los parámetros al método show.
Solo cuando se cumplan las condiciones y el nivel de registro sea el nivel 1, se
llamará al método en la interfaz show y
se empalmará la cadena.
Si no se cumplen las condiciones, el registro es Si el nivel no es 1,
el método que se muestra en la interfaz no se ejecutará,
por lo que el código de empalme no se ejecutará,
por lo que no hay pérdida de rendimiento.
@FunctionalInterface
public interface Demo02Logger {
String show();
}
Definir una clase para cumplir con los requisitos.
import java.util.logging.Logger;
public class Demo02LoggerLambda {
public static void show(int i, Demo02Logger logger)
{
if (i==1)
System.out.println(logger.show());
}
public static void main(String[] args) {
String message1="Hello";
String message2="world";
String message3="world";
show(1,()->{return message1+message2+message3;});
show(2,()->{
System.out.println("不满足条件不执行!!!");
return message1+message2+message3;});
}
}