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); };
    }
}
相关推荐
西阳未落1 小时前
C语言中的内存函数(memcpy, memmove, memcmp, memset)
c语言·开发语言
卓码软件测评2 小时前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
axban3 小时前
QT M/V架构开发实战:QFileSystemModel介绍
开发语言·qt·架构
钢门狂鸭5 小时前
关于rust的crates.io
开发语言·后端·rust
Lionel_SSL6 小时前
《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
java·开发语言·jvm
记得开心一点嘛6 小时前
手搓Springboot
java·spring boot·spring
技术猿188702783516 小时前
PHP 与 WebAssembly 的 “天然隔阂”
开发语言·php·wasm
薄荷撞~可乐6 小时前
C#Task(Api)应用
开发语言·c#
老华带你飞6 小时前
租房平台|租房管理平台小程序系统|基于java的租房系统 设计与实现(源码+数据库+文档)
java·数据库·小程序·vue·论文·毕设·租房系统管理平台
独行soc6 小时前
2025年渗透测试面试题总结-66(题目+回答)
java·网络·python·安全·web安全·adb·渗透测试