jdk1.8新特性(Lambda表达式)

只具有一个方法的普通接口可以被转换为Lambda表达式。

语法:{参数1,参数2...}->{...}

(1)没有参数时使用Lambda表达式    ()->{...}

(2)带参数时使用Lambda表达式       (int a)->{...}

(3)代码中只一句代码使用Lambda表达式   ()->System.out.println(a);

(4)代码中有多句代码时使用Lambda表达式  (int a,int b)->{System.out.println(a);System.out.println(a*b);}

(5)有返回值的代码块      (int a,int b)->{System.out.println(a);System.out.println(a*b); return a;}

(6)参数中使用final关键字    (final String a)->System.out.println(a);

demo如下:

public class tet {
    public static void main(String[] args){
        //System.out.println(4&10);//相当于10%(4+1)

        //代码中只一句代码使用Lambda表达式
  /*    IEat iEat3 = ()-> System.out.println("代码中只一句代码使用Lambda表达式");
        iEat3.eat();*/

        //没有参数时使用Lambda表达式
/*        IEat iEat3 = ()-> {System.out.println("没有参数时使用Lambda表达式 ");};
        iEat3.eat();*/

        //带参数时使用Lambda表达式
/*        IEat iEat3 = (int a)-> {System.out.println("带参数时使用Lambda表达式  "+a);};
        iEat3.eat(5);*/

        //代码中有多句代码时使用Lambda表达式
        /*IEat iEat3 = (int a)-> {System.out.println("代码中有多句代码时使用Lambda表达式"+a);System.out.println("代码中有多句代码时使用Lambda表达式"+a);};
        iEat3.eat(5);*/

        //有返回值的代码块
       /* IEat iEat3 = (int a)-> {System.out.println("有返回值的代码块"+a); return a;};
        iEat3.eat(5);*/

       //参数中使用final关键字
        IEat iEat3 = (final int a)-> {System.out.println("参数中使用final关键字"+a); return a;};
        iEat3.eat(5);
    }

    interface  IEat{
        public int eat(final int a);
    }

    class IEatImpl implements IEat{
        public int eat(final int a){
            System.out.println("eat bnana");
            //System.out.println("eat apple");
            return a;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/wenbiquan/p/11069669.html