Технология отложенной загрузки Lambda
Строка сращивания обычного кода
Пример кода
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);
}
}
обнаружена проблема:
Я обнаружил проблему потери производительности. При
вызове метода show второй переданный параметр представляет собой склеенную строку.
Строка склеивается перед методом show. В
методе show, если уровень журнала не равен 1,
склейка не будет возвращена. После строки, поэтому строка была потрачена впустую сращивание
Использование лямбда-функционального интерфейса для объединения строкового кода
Определите функциональный интерфейс
Преимущество:
Используйте лямбда-выражения в качестве параметров для передачи, просто передайте параметры методу show.
Только при соблюдении условий и уровне журнала 1
будет вызван метод в интерфейсе show, и
строка будет склеена.
Если условия не соблюдены, журнал будет Если уровень не равен 1
, метод, показанный в интерфейсе, не будет выполняться,
поэтому код склейки не будет выполняться,
поэтому потери производительности не будут потеряны.
@FunctionalInterface
public interface Demo02Logger {
String show();
}
Определите класс для выполнения требований
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;});
}
}