java Rambda表达式的几种写法

今天简单的学习了Rambda表达式,总结了rambda表达式的几种写法,可能不太正确,有错的地方还请各位大佬告诉我,我会努力改正的

 

public class Test1 {
    /*对于Ramdba表达式
     * Java8有一个短期目标和一个长期目标。
     * 短期目标是:配合“集合类批处理操作”的内部迭代和并行处理
     * 
     * 长期目标是将Java向函数式编程语言这个方向引导
     * (并不是要完全变成一门函数式编程语言,
     * 只是让它有更多的函数式编程语言的特性),
     * 也正是由于这个原因,Oracle并没有简单地使用内部类去实现λ表达式,
     * 而是使用了一种更动态、更灵活、易于将来扩展和改变的策略
     * (invokedynamic)。(这段内容是来自另一位博主的文章内的,觉得挺好就放在这里可)
     *
     *JDk预定了很多函数接口已避免用户重复定义 最典型的就是Function了:
     *
     *    @FunctionalInterface()
     *    public interface Function<T,R>{
     *        R apply(T t);
     *    }接收一个T类型 返回一个R类型
     *
     *    另一个预定的接口叫做Consumer 跟Function的唯一不同的是他没有返回值
     *    @FunctionalInterface();
     *    public interface Consumer(){
     *        void accept(T t);
     *    }接收一个T类型的数组 没有返回值
     *
     *    还有一个预定的函数接口Predicate用来判断是否满足条件
     *    @FunctionalInterface
     *    public interface Perdicate<T>{
     *        boolean test(T t);
     *    }接收T类型返回boolean类型
     *    
     *    
    */    
    public static void main(String[] args) {
        //写法一
        //对于函数式接口 中没有传入参数 无需返回值的 方法 rambda表达式可以这样写
        //()->{System.out.println("Rambda表达式")}
        
        //例如Runnable接口中的run方法
        Runnable r1 =(Runnable)()->{
        System.out.println("Ranbda 表达式");
        };
        r1.run();
        //其实上面的代码可以简写为
        Runnable r =()->{
            System.out.println("Ranbda 表达式");
        };
        //因为java编译器会根据上下文推断 
        //这个无参且没有返回值的rambda表达式刚好可以对应Runnable中的run方法
        System.out.println("===========================");
        
        //写法二
        //对于函数式接口中 有传入参数 无返回值类型的方法 写法如下
        Consumer<String> con =element->{   //element 为传入的参数 无需声明
            System.out.println("有传入参数无返回值类型的方法  参数为:"+element);
        };
        //调用con中的accept方法
        con.accept("abc");//因为泛型中定义的为String类型,所以只能传入String类型
        
        System.out.println("===========================");
        
        
        //对于函数式接口中 有传入参数 并且有返回值类型的方法 写法如下
        Function<String,String> fun =element->{//element为传入参数
            return "有参数且有返回值类型的方法   传入参数为:"+element;
        };
        
        String returnedValue =fun.apply("abc");
        System.out.println(returnedValue);
        
        System.out.println("===========================");
                
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值