函数式接口和Optional类的运用

  public static void main(String[] args) {
        founctions();
        String name ="123";
        System.out.println(validateValue(name, s -> s.isEmpty() ? "不能为空" : s));
    }
    
    //1、函数式接口  Function:传入一个类型值返回一个类型值(接口)
    static void founctions() {
        Function<String,String> function=new Function() {
            @Override
            public Object apply(Object o) {
                return o;
            }
        };
        String str1=function.apply("aaa");
        System.out.println(str1);
    }
    //上下等价
    public static String validateValue(String name,Function<String,String> function){
        return function.apply(name);
    }
//1、函数式接口  Function:传入一个类型值返回一个类型值(接口)
//2、函数式接口  Consumer: 传入一个类型值,没有返回值
//3.函数式接口 Predicate:一般用于做判断,返回boolean类型

一、函数式接口和::结合使用

java的::关键字的用法参考:https://blog.csdn.net/kegaofei/article/details/80582356

lamda表达式是为了优化匿名内部类(有且只有一个抽象方法)

lamda表达式:

  格式:() -> { 重写方法的内容}
    
// 格式含义:
//		() 代表是的 你这个接口中的那个抽象方法的 参数 也就是 这个例子中 findAll()方法的参数。
//		-> 这是一个固定格式 意思是  ()里面的参数 可以给 后面的大括号{}使用。
//		{} 就是要写 你重写方法的 那个方法体。

lambda优化:
					()内如果只有一个参数 可以省略数据类型和小括号本身。
					()内多个参数的 只能省略参数的数据类型不能省略小括号本身
					{}内如果只有一句话 可以省略分号 还有return 还有大括号本身
				
				lambda和匿名内部类的区别:
					1:
						匿名内部类 可以对 普通类  抽象类 接口 都可以使用
						但是lambda必须对接口使用
					
					2:
						匿名内部类 可以要求 普通类  抽象类 接口 里面有多少抽象方法
						lambda 要求接口中只能有一个抽象方法
					
					3:
						匿名内部类会生成class文件
						而lambda不生成class文件

二、Optional的用法

Optional的用法
也是用法
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值