Java Lambda表达式详解——演化过程
8种写法,详解Lambda表达式怎么来的
注意:
1,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装 2,前提是接口为函数式接口 3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号
package com.chenxb.myLambda; public class MyLambda { public static void main(String[] args) { //第一种写法,通过实现类 Dog dog = new Dog(); dog.setName("inplements"); //第二种写法,通过实现类,简化 new Dog().setName("implements2"); //第三种写法,匿名内部类 IAnimal iAnimal = new IAnimal() { @Override //这是匿名内部类当中的方法,重写了抽象类的方法 public void setName(String name) { System.out.println(name); } }; iAnimal.setName("anonymous"); //第四种写法,匿名内部类,再简化 new IAnimal() { @Override //这是匿名内部类当中的方法,重写了抽象类的方法 public void setName(String name) { System.out.println(name); } }.setName("anonymous2"); //第五种写法,lambda IAnimal iAnimalLambda = (String name) -> { System.out.println(name); }; iAnimalLambda.setName("lambda"); //第五种写法,lambda,去掉参数类型 IAnimal iAnimalLambda2 = (name) -> { System.out.println(name); }; iAnimalLambda2.setName("lambda2"); //第六种写法,lambda,去掉括号 IAnimal iAnimalLambda3 = name -> { System.out.println(name); }; iAnimalLambda3.setName("lambda3"); //第六种写法,lambda,去掉中括号 IAnimal iAnimalLambda4 = name -> System.out.println(name); iAnimalLambda4.setName("lambda4"); //第七种写法,lambda,代码块 IAnimal iAnimalLambda5 = name -> { System.out.println(name); System.out.println(name); }; iAnimalLambda5.setName("lambda5"); //第八种写法,lambda,多个参数可以去掉参数类型,要同时去掉 IPeople iPeople = (name,age) -> System.out.println(name + " " + age); iPeople.setName("lambda more para",18); /*注意: 1,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装 2,前提是接口为函数式接口 3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号 */ } } interface IPeople { public abstract void setName(String name, int age); } class Man implements IPeople { @Override public void setName(String name, int age) { System.out.println(name + " " + age); } } interface IAnimal { public abstract void setName(String name); } class Dog implements IAnimal { @Override public void setName(String name) { System.out.println(name); } }
上一篇:
IDEA上Java项目控制台中文乱码