java匿名函数return_Java中的Lambda匿名函数后续

函数式编程(函数式接口):一个接口只包含一个方法实现

public interface Lambda{

void method();

}

// 调用

Lambda lambda = new Lambda(){

};

Lambda lambda1 = () - >{

};

Lambda lambda2 = () ->xxx;

Function接口,一个参数对应一个返回值

Supplier 一个输出

Consumer一个输入

BiFuction 两个输入一个输出

BiConsumer 两个输入

方法引用

静态方法引用java

类名::staticMethod, lambda:(args) ——>类名.staticMethod(args);编程

实例方法引用app

实例::实例方法,lambda:(args)——>实例.实例方法(args);函数式编程

对象方法引用函数

类名::实例方法,lambda:(实例, args) ---> 实例.实例方法(args); 第一个参数类型必须为实例方法对应的类学习

构造方法引用code

类名::new,lambda:(args) ---->new 类名(args);对象

package Lambda;

import java.util.ArrayList;

import java.util.List;

import java.util.function.BiFunction;

import java.util.function.Consumer;

import java.util.function.Supplier;

public class Test {

public Test(){

System.out.println("create");

}

public static void main(String[] args) {

// final Lambda lambda = Test::method1;

// lambda.method(1);

// List lambdas = new ArrayList();

// for (int i = 0; i < 10; i++) {

// lambdas.add(Test::method1);

// }

//

// for (int i = 0; i < 10; i++) {

// lambdas.get(i).method(i);

// }

// Lambda lambda = new Test()::method;

// lambda.method();

// Lambda lambda = ()->new Test().method();

// lambda.method();

// Lambda lambda = Test::new;

// lambda.method();

// Lambda lambda = ()->new Test();

// lambda.method();

// 静态方法

Lambda lambda = Test::method1;

Lambda lambda4 = () -> Test.method1();

// 实例方法

Lambda lambda1 = new Test()::method;

Lambda lambda5 = ()-> new Test().method();

// 对象方法,要求前面接口的泛型类型须要实例方法的类类型一直

// Lambda lambda2 = Test::method;

Consumer consumer0 = (s) -> new Test().method1("hhhh");

Consumer consumer =Test::method;

// 构造方法

Lambda lambda3 = Test::new;

Lambda lambda7 = ()->new Test();

}

void method(){

System.out.println("method");

}

static void method1(String s){

System.out.println(s);

}

}

高级应用

用一个集合存放多个方法的引用,用的时候再调用接口

List lambdas = new ArrayList();

for (int i = 0; i < 10; i++) {

lambdas.add(Test::method1);

}

for (int i = 0; i < 10; i++) {

lambdas.get(i).method(i);

}

函数式编程经常使用接口

Consumer consumer = (i) -> System.out.println(i);

consumer.accept(10);

Supplier supplier = () ->100;

System.out.println(supplier.get());

Function function = (str)->str.length();

System.out.println(function.apply("嗨咯"));

BiFunction biFunction = (str1, str2)->str1.length()+str2.length();

System.out.println(biFunction.apply("嗨喽", "学习Java"));

将函数式接口做为参数

// 定义

static void method4(int i, Consumer consumer){

consumer.accept(i);

}

static int method5(Supplier supplier){

return supplier.get();

}

static int method6(String s, Function function){

return function.apply(s);

}

static int method7(String s1, String s2, BiFunction biFunction){

return biFunction.apply(s1, s2);

}

// 调用

Consumer consumer = (i) -> System.out.println(i);

consumer.accept(10);

Supplier supplier = () ->100;

System.out.println(supplier.get());

Function function = (str)->str.length();

System.out.println(function.apply("嗨咯"));

BiFunction biFunction = (str1, str2)->str1.length()+str2.length();

System.out.println(biFunction.apply("嗨喽", "学习Java"));

for (int i = 0; i < 20; i++) {

method4(i,consumer);

System.out.println(method5(supplier));

System.out.println(method6(String.valueOf(i), function));

System.out.println(method7(String.valueOf(i), String.valueOf(i), biFunction));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值