Java 8 和 11 开始提供的新特性面试
说下 Lambda function
Lambda 是 JDK 8 以后的版本才提供的功能。
在 JDK 8 之前是没有的。
Java Lambda表达式 的一个重要用法是简化某些匿名内部类 (Anonymous Classes
)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic 指令来实现Lambda表达式的。
上面的解释是不是属于完全没有看明白的那种呀。
这样理解吧,对我们一般使用的方法来说,我们需要输入的变量,然后对输入的变量进行操作。
现在我们在输入的变量部分写成一个函数,让函数作为输入的参数来让方法进行计算。
如下面的代码,我们对 HashMap 进行遍历。
employeeSalary.forEach((employee, salary) -> {
System.out.println(employee + " => " + salary);
});
至于实现来说,就相对复杂点,对目前使用的概念来说,能知道上面的内容就大致差不多了。
Optional 类
如果你写过一些 Java 代码的话,你应该知道 Java 中最常见的就是空指针异常错误。
这个错误的原因就是你对一个为空的对象进行操作了。
比如说,你有一个 List,但是这个 List 是空对象,如果你要向这个 List 中添加元素或者删除元素的话,你铁定会遇到空对象的异常。
Optional 类是一个可以为 NULL 的容器对象。如果值存在则isPresent()
方法会返回true,调用get()
方法会返回该对象。
这个问题在我们网站上已经有了很多的讨论了,如希望了解更多,请参考:Java 8 开始新增的 Optional 类
针对面试的回答,Optional 主要是尝试解决 Java 中遇到的过多的空对象异常问题。
在 Spring 的 JPA 的查询中,我们也会大量的使用 Optional 来进行返回。
上面的 JPA 查询就是使用的是 Optional。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-09-21 Confluence 的页面索引宏支持中文索引吗
2020-09-21 Spring boot 启动提示数据源错误
2019-09-21 Mockito 2 参数匹配器