首页 > 代码库 > java8简单入门--函数式接口 @FunctionalInterface

java8简单入门--函数式接口 @FunctionalInterface

1、介绍

  看了几篇关于 java8 入门的例子,其中引入了许多令人期待已久的特性(虽然我没有过这样的体会),但不管你的代码是普通青年款还是文艺青年款,你都可以从被 java8 的重新组织的代码看到她的简洁之处,不得不让我对这些新入贵圈(java圈)的小鲜肉做一些记录,以便我能很好的利用他们。

  最大的一个特点莫非就是引入了“函数式”编程这一个概念(都是剽窃的别的语言来的),还有那么多新奇的词语,比如“语法糖”“闭包”“显式|隐式函数”等这里我就不再一个一个去体会了,这里属于初次接触,先理解会用为主,细节的深入待后期慢慢琢磨。

 

2、函数式接口 -- @Functionnalinterface

  在翠花正式上代码示例之前,我们现来对这个函数式接口有个认识:

  1. 接口必须只有一个抽象方法;
  2. 接口可以有其他的默认(default)或者静态(static)方法;
  3. 接口默认继承了 Object 类,所以接口中不能覆盖了 Object 中的方法;

说明:该注解不是必须的,如果一个接口满足“函数式接口”特性,那么不加这个注解也没有影响,加上该注解能够更好的让编译器检查,如果不符合规范将会报编译错误。

  比如在 jdk8 中就对Comparator、Callable、Runnable等接口加上了该注解,下面两段代码的效果是一样的:

  

 1 public static void runThreadByLambda() {
 2     Runnable runnable = () -> System.out.println("这个是用拉姆达实现的线程");
 3     new Thread(runnable).start();
 4 }
 5 
 6 //---------------------------------------------------------------------------------
 7 public static void runThreadByInnerClass() {
 8     Runnable runnable = new Runnable() {
 9     @Override
10     public void run() {
11         System.out.println("这个是用内部类实现的线程");
12     }
13     };
14     new Thread(runnable).start();
15 }

 

java8简单入门--函数式接口 @FunctionalInterface