java 8新特性(一) 函数式编程

一.Java中的编程范式

1.面向对象编程(java是纯面向对象的编程语言,除了基本的数据类型,其他的都是面向对象编程)
2.面向切面编程(AOP,jdk动态代理,cglib动态代理)
3.函数式编程(java 8 中JDK版本中最大变化的版本)

二.函数式接口

  1. 函数式接口概念:接口中,有且仅有一个没有实现方法,叫函数式接口。
/**
 * @author chenjingbing
 * 函数式接口,使用@FunctionInterface
 * 注解可以标识改接口是函数式接口
 */
@FunctionalInterface
public interface ExampleInterface {
    
   List exampleMethod();
     
}
  1. java 8中接口新特性:接口中允许新的关键字 default,使用default关键字修饰的接口中的方法,该方法可以有具体的实现
/**
 * @author chenjingbing
 *
 */

public interface ExampleInterface {

    /**
     * 使用default关键字在接口中可以有具体的实现
     * @return
     */
   default List defaultMethod(){
       ArrayList ret = Lists.newArrayList("test1", "test2", "test3");
       return ret;
   }

}

三.lambda表达式

  1. lambda表达式:字面上的意思就是一种表达式。这是表达式有一种特定的格式。()->{}这就是一个简单的lambda表达式
  2. 函数式接口和lambda表达式之间的关系:
    不着急我们一步一步的来分析不着急我们一步一步的来分析
首先思考一个让你通过runnable接口创建一个线程,你会怎么做

java 8新特性(一) 函数式编程_第1张图片

  1. 如果实现runnable接口的实现类中的代码量很少,你会如何的优化:使用匿名类
package com.cjb.center.java8.interfaces;
/**
 * @author chenjingbing
     用于函数式的接口的测试
 *
 */

public class TestMain {

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.printf("通过匿名类创建线程");
            }
        }).start();
    }
}

  1. java 8隆重登场 :首先思考一下runnable是否符合函数式接口的标准
    有且仅有一个没有实现的方法完全符合函数式接口的标准
package com.cjb.center.java8.interfaces;
/**
 * @author chenjingbing
     用于函数式的接口的测试
 *
 */

public class TestMain {

    public static void main(String[] args) {


        Thread threadOne = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.printf("通过匿名类创建线程");
            }
        });

        // 通过lambda表达式创建runnable接口的实例
        Thread threadTwo = new Thread(() -> {
            System.out.printf("通过函数式创建的Runnable接口实例");
        });
        threadTwo.start();
    }
}

5.函数式的含义:()代表函数的参数列表(可以有多个参数)->是函数特殊的个数{}是函数具体的实现

6.函数式接口和函数式之间的关系:函数式接口可以使用lamdba表达式书写。

7.lambda表达式好处:简化代码的书写,后期会写到java 8中的流式编程也是依赖lambda表达式。

你可能感兴趣的:(java,8,新技术)