zoukankan      html  css  js  c++  java
  • 高效 告别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
  • 相关阅读:
    类的继承
    垃圾回收GC
    网络层
    数据链路层
    TCP/IP协议分层模型
    OSI参考模型
    浏览器访问一个域名的过程
    Thread&ThreadLocal
    设计模式---单例模式
    内存泄漏和内存溢出
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12630756.html
Copyright © 2011-2022 走看看