高效 告别996,开启java高效编程之门 2-10实战:自定义函数式接口

1 有用部分

2    代码演练

1  有用部分

个人理解:

1.1  关于lambda的应用

通过 @FunctionalInterface注解 将其参数 fileContent  注入,调用的时候可以直接调取到。

服务层通过直接调用接口的方法,没有用实现类

1.2  关于文件流的读取操作

demo中设计更多的流的读取的操作

2  代码演练

需求:

将本地文件打印出来

接口:

package com.imooc.zhangxiaoxi.lambda.file;

/**
 *  接口中只有一个抽象方法,可以应用lambda表达式
 *
 *  加入注解
 *
 *  文件处理函数式接口
 */
@FunctionalInterface
public interface FileConsumer {

    /**
     * 函数式接口抽象方法
     * @param fileContent
     */
    void fileHandler(String fileContent);

}

文件服务类:

package com.imooc.zhangxiaoxi.lambda.file;

import java.io.*;

/**
 * 文件服务类
 */
public class FileService {

    /**
     * 根据url获取文件,打印文件内容
     */
    public void print(String url,FileConsumer fileConsumer) throws IOException {

        //流读取
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(url)));

        //定义行变量和内容sb
        String line =  "";
        StringBuilder stringBuilder = new StringBuilder();

        //循环读取文件内容
        while((line=bufferedReader.readLine())!=null){
            stringBuilder.append(line+"
");
        }

        //调用函数式接口方法,将文件内容传递给lambda表达式
        fileConsumer.fileHandler(stringBuilder.toString());

    }
}

文件测试类:

package com.imooc.zhangxiaoxi.lambda.file;

import org.junit.Test;

import java.io.IOException;

public class FileServiceTest {


    @Test
    public void Test() throws IOException {

     //两种方式
  
//1.2 FileService fileService = new FileService(); fileService.print("F:/xiangmu3/Xin/test996/src/test/java/com/imooc/zhangxiaoxi/" + "lambda/file/FileServiceTest.java", fileContent -> { System.out.println(fileContent); }); //1.1 /*FileService fileService = new FileService(); fileService.print("F:/xiangmu3/Xin/test996/src/test/java/com/imooc/zhangxiaoxi/" + "lambda/file/FileServiceTest.java", fileContent -> System.out.println(fileContent));*/ } }

打印日志

package com.imooc.zhangxiaoxi.lambda.file;

import org.junit.Test;

import java.io.IOException;

public class FileServiceTest {


    @Test
    public void Test() throws IOException {
        //1.2
        FileService fileService = new FileService();
        fileService.print("F:/xiangmu3/Xin/test996/src/test/java/com/imooc/zhangxiaoxi/" +
                        "lambda/file/FileServiceTest.java",
                fileContent -> {
            System.out.println(fileContent);
        });

       //1.1
        /*FileService fileService = new FileService();
        fileService.print("F:/xiangmu3/Xin/test996/src/test/java/com/imooc/zhangxiaoxi/" +
                "lambda/file/FileServiceTest.java",
                fileContent -> System.out.println(fileContent));*/
    }

}


Process finished with exit code 0
原文地址:https://www.cnblogs.com/1446358788-qq/p/12630756.html