1. lambda初体验

  1. 首先声明一个函数式接口,就只接口内只有一个抽象方法
java 复制代码
//函数式接口
public interface Factory {

    Object getObject();

}
  1. 接口实现类
java 复制代码
public class SubClass implements Factory {

    @Override
    public Object getObject() {
        return new User();
    }

}
  1. User类
java 复制代码
public class User {

    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
  1. 测试类:
java 复制代码
public class LambdaTest {
    public static void main(String[] args) {

        //1.子类实现接口
        Factory factory = new SubClass();
        User user = (User)factory.getObject();
        System.out.println(user);

        //2.匿名内部类
        factory = new Factory() {
            @Override
            public Object getObject() {
                return new User("zhangsan",33);
            }
        };
        User object = (User)factory.getObject();
        System.out.println(object);

        //3.lambda表达式
        factory = () -> {
            return new User("李斯特",33);
        };
        Object object1 = factory.getObject();
        System.out.println(object1.toString());
        System.out.println("-----------------------------------------");

        //4.使用lambda表达式,做为参数传递
        User user4 = getUserFromFactory(() -> {return new User("wangwuxxx", 223);}, "User");
        System.out.println(user4);

        System.out.println("-----------------------------------------");

        //5. 使用lambda做为返回值
        User user5 = (User)getFactory().getObject();
        System.out.println(user5);
    }


    public static User getUserFromFactory(Factory factory,String beanName){
        Object obj = factory.getObject();
        if(obj != null && obj.getClass().getSimpleName().equals(beanName)){
            return (User) obj;
        }
        return null;
    }

    public static Factory getFactory(){
        return () -> { return new User("dingxx",33); };
    }
}
相关推荐
程序员小假20 小时前
我们来说一下 Mybatis 的缓存机制
java·后端
qq_3363139320 小时前
java基础-学生管理系统升级
java
猫头虎20 小时前
永久免费白嫖多个域名,一键托管Cloudflare,免费申请SSL加密证书,轻松建站、搭建线路伪装
服务器·开发语言·网络·数据库·python·网络协议·ssl
弥巷20 小时前
【Android】Android内存缓存LruCache与DiskLruCache的使用及实现原理
android·java
好好沉淀20 小时前
Apache 工具包(commons-io commons-lang3 )保姆介绍
java·ide
毕设源码-邱学长20 小时前
【开题答辩全过程】以 服装购物平台为例,包含答辩的问题和答案
java·eclipse
无敌最俊朗@21 小时前
C++后端总览
开发语言
多喝开水少熬夜21 小时前
堆相关算法题基础-java实现
java·开发语言·算法
richxu2025100121 小时前
Java开发环境搭建之 10.使用IDEA创建和管理Mysql数据库
java·ide·intellij-idea
7澄121 小时前
Java 集合框架:List 体系与实现类深度解析
java·开发语言·vector·intellij-idea·集合·arraylist·linkedlist