zoukankan      html  css  js  c++  java
  • Java学习笔记(9)

    lambda表达式:

    只定义了单个方法的接口,称为单一抽象方法(Single Abstract Method, SAM)接口;由于此接口通过调用,完成某一功能,所以也称为功能接口,此类接口的实例称为功能对象

    lambda表达的作用是相当于一个函数,编译器把lambda表达式编译为一个对象,该对象是一个内部匿名类的实例,此匿名类实现了功能接口,只有一个方法,此方法的参数即为lambda表达式的参数,此方法的方法体即为lambda表达式的方法体

    由上述可以推出如下结论:如果一个方法的参数是功能接口类型,可以用lambda表达式作为参数传给此方法

    所以如果一个方法的接收参数为功能接口类型,可以通过如下三种方式传参数,其中接口上@FunctionInterface注释,表明该接口是一个功能接口

     1 public void Run(){
     2         setAction(new InnerClass());
     3 
     4         setAction(new T1() {
     5             @Override
     6             public void test() {
     7                 System.out.println("匿名类方式");
     8             }
     9         });
    10 
    11         setAction(() -> System.out.println("lambda表达式方式"));
    12     }
    13 
    14     public void setAction(T1 t1) {
    15         t1.test();
    16     }
    17 
    18     class InnerClass implements T1 {
    19         @Override
    20         public void test() {
    21             System.out.println("内部类方式");
    22         }
    23     }
    24 
    25     @FunctionalInterface
    26     interface T1 {
    27         void test();
    28     }
  • 相关阅读:
    cmp函数
    代码6
    代码5
    Google Code Jam在线測试题目--Alien Language
    Android ListView 和 ScrollView 冲突问题
    IOS的一个关于球碰撞的小游戏
    运用smali自己主动注入技术分析android应用程序行为
    《Pro Android Graphics》读书笔记之第二节
    单播、多播(组播)和广播的差别
    Swift闭包(Closure)
  • 原文地址:https://www.cnblogs.com/xclw/p/10558353.html
Copyright © 2011-2022 走看看