函数式接口概述
有且只有一个抽象方法 即无内容方法
用@Functionallnterface判断是不是函数式接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Runnable runnable = new Runnable() { @Override public void run() { System.out.println("old run"); } }; Thread t = new Thread(runnable);
Runnable runnable1 = ()->{ System.out.println("lambda run"); }; Thread t1 = new Thread(runnable1);
|

lamda可以直接将代码块传递给对象或方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| public static String processFile() throws IOException { try( BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\JavaProject\\JavaBasicDemo\\test.txt"))){ return bufferedReader.readLine(); } }
@FunctionalInterface interface FileReadInterface{ String process(BufferedReader reader) throws IOException; }
FileReadInterface fileReadInterface = reader -> reader.readLine();
FileReadInterface fileReadInterface2 = reader -> reader.readLine() + reader.readLine();
public static String processFile(FileReadInterface fileReadInterface) throws IOException { try( BufferedReader bufferedReader = new BufferedReader(new FileReader("./test.txt"))){ return fileReadInterface.process(bufferedReader); } } public class FileReaderDemo { public static void main(String[] args) throws IOException { FileReadInterface fileReadInterface = reader -> reader.readLine(); FileReadInterface fileReadInterface2 = reader -> reader.readLine() + reader.readLine(); String str1 = processFile(fileReadInterface); String str2 = processFile(fileReadInterface2); System.out.println(str1); System.out.println(str2); } public static String processFile(FileReadInterface fileReadInterface) throws IOException { try( BufferedReader bufferedReader = new BufferedReader(new FileReader("./test.txt"))){ return fileReadInterface.process(bufferedReader); } } public static String processFile() throws IOException { try( BufferedReader bufferedReader = new BufferedReader(new FileReader("./test.txt"))){ return bufferReader.readLine(); } }
}
@FunctionalInterface interface FileReadInterface{ String process(BufferedReader reader) throws IOException; }
@FunctionalInterface public interface Function<T, R> { R apply(T t); }
|