数据保护背景下,安全团队引入了哪些新技术进行防控升级?点击学习案例 了解详情
写点什么

JDK11 的 11 个谜题:Hanno Embregts 在 Devoxx UK 阐述对 Java 认证的理解

作者:Olimpiu Pop

  • 2022 年 5 月 27 日
  • 本文字数:1398 字

    阅读完需:约 5 分钟

JDK11的11个谜题:Hanno Embregts在Devoxx UK阐述对Java认证的理解

Hanno Embregts向 Devoxx 的听众分享了他在获得Oracle Java 11认证的过程中学到的 11 件”疯狂的事情“。尽管他已经有接近 15 年的职业生涯,但他依然会吸收 Java 中这些新奇的东西,并将它们作为日后惯常的实践。


当被问到认证过程中的最大收获时,Embregts 说到:

在自己的编码世界里面,尽管我觉得已经到了很高超的水准,但是我依然意识到作为专业的开发人员,我们需要投入时间来不断丰富对所使用工具的知识。这将会提高我们的生产力。


由于开发人员喜欢潜心研究代码,所以这个演讲没有展示讲义,而是展示了11个单元测试(UT),其中每个UT代表了一个“谜题”


谜题11:数组类型定义

  • 组合使用本地类型推断和[]会导致无法编译

  • C 风格的数组定义需要针对每个变量重复进行,它是不可复制的。


谜题10:流排序只针对Comparable对象有效

如果你尝试对一个对象的流进行排序,而目标对象不是Comparable(也就是实现了compareTo(...)方法)对象的话,那么将会抛出RuntimeException


谜题9:接口中的静态方法只允许在包含该方法的接口中进行调用

如果从类中尝试访问接口的静态方法将无法编译通过。


谜题8:在枚举中创建匿名子类来覆盖枚举的功能

不要覆盖定义在枚举中的方法,这有可能会产生意料之外的行为。为了确保达到预期的效果,这些方法可以而且需要在匿名内类中进行重写。


谜题7:根据不同的类型,除以零会有不同的行为

对于 int 或 long 类型,除以数字零会抛出一个ArithmeticException,但是如果使用浮点数(float 或 double)的话,将会得到POSITIVE_INFINITY


谜题6:方法重载参数的优先级因所使用类型的不同而不同

当编译器无法找到准确的类型时,它将扩展至更广泛的原始类型,如果原始类型也不可用的话,它将会尝试装箱原始类型或可变参数(varargs)。


谜题5:如果 Switch 语句试图涵盖多个场景的话,可能会产生令人疑惑的结果。使用“|”操作符来涵盖两个不同的场景(case)可能会产生预料之外的结果,因为它会作为一个位操作符,而操作的结果会被 switch 语句用来匹配适当的类别。


谜题4:处理克隆的数组、不可变集合和不可变类时的相等性

Java 的克隆操作是浅克隆,因此,它会指向与原始数组或集合中相同的对象。在这种情况下,使用“==”比较两个数组会产生 false,但是使用Object.equals(...)方法会生成 true。


谜题3:数字化的包装器对象

为了进行优化,Java 将值在-128 和 127 之间的数字进行了缓存。因此,这个范围的数字在装箱时,总会解析成相同的引用。


谜题2:函数式接口

Java 中的函数式接口应该只有一个方法并且要使用@FunctionalInterface注解


谜题1:向方法引用传递参数

Embregts 认为,每天开车上下班不一定保证你能够成为一个专业的司机,每天编码也不能保证你成为一个专业的编码人员。因此,从这个角度出发,花费时间更深入地了解开发人员日常工作中使用的框架和语言,这将有助于提高编写代码的质量,避免某些操作出现意料之外的结果和棘手的 bug。这种类型的学习也可以帮助我们更具有生产力。


JDK 11的采用率正在不断增长,到 2021 年底,它已经与 JDK 8 持平了。


作者简介:

Olimpiu Pop,软件工程师,拥有从金融软件到 IAM 的实际经验。热衷于工具化和优化开发流程。在欧洲 IDaaS 的 iWelcome 担任工程主管。Transylvania JUG 的组织者--我很想做更多这样的事情。罗马尼亚 Voxxed 项目委员会成员,希望在不久的将来能成为演讲者。JavaAdventCalendar 的主编。


原文链接:

11 Puzzles from JDK11: Hanno Embregts on Java Certification at Devoxx UK

2022 年 5 月 27 日 09:282138

评论 2 条评论

发布
用户头像
作者的一些学习经验和心得。
2022 年 05 月 28 日 13:27
回复
很有意思的一些小样例
2022 年 05 月 28 日 20:38
回复
没有更多了
发现更多内容

GitHub上这份阿里的Java高并发核心手册,即使再过20年依然“NB”

Java~~~

Java redis 架构 面试 高并发

CV和NLP融合应用,百度联合国内外机构成功举办ICDAR 2021文档图像与语言研讨会

科技热闻

阿里内网疯狂传阅的“M8级”分布式架构笔记,GitHub刚上线就霸榜

Java~~~

Java 架构 面试 分布式 微服务

逮虾户!清华架构师吐血整理出这份多线程并发指南,带你弯道超车

Java~~~

Java MySQL 架构 面试 JVM

Flink 1.14 新特性预览

Apache Flink

大数据 flink

一文搞定Matplotlib各个示例

华为云开发者联盟

Python 深度学习 Numpy matplotlib 绘图库

白嫖!一口总结了金九银十(P5-P7级)1000多道Java面试题,20+大厂必考点及Java面试框架知识点!

Java 程序员 架构 面试 计算机

阿里资深工程师写出这份Java异步编程指南,竟获GitHub百万点赞

Java~~~

Java 架构 面试 计算机 TCP协议

微信后台基于时间序的海量数据冷热分级架构设计实践

OpenIM

腾讯质量效能提升最佳实践:智能自动化测试探索和建设

WeTest

如何让一颗奢华珠宝的“璀璨”不落幕?

旺链科技

产业区块链 珠宝 观点分享

大厂炸锅了!这份全程无尿点的Java彩版面试开挂攻略在GitHub火了

Java~~~

Java MySQL 架构 面试 JVM

百度混部实践系列 | 如何提高 K8S 集群资源利用率?

百度开发者中心

最佳实践 方法论 k8s

牛逼!从阿里大牛手里买到了1个G牛逼的Java面试题库,史上最强

Java~~~

Java 架构 面试 JVM 架构师

使用 Flink Hudi 构建流式数据湖

Apache Flink

大数据 flink

阿里最新21版Java面试系列手册已出炉,竟堪称GitHub面试杀手锏

Java~~~

Java 架构 面试 JVM 面经

GitHub上火了的MySQL性能调优手册,全篇无废话不愧是清华神人

Java~~~

Java MySQL 数据库 架构 面试

Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务

阿里巴巴云原生

云计算 阿里云 云原生 可视化 Grafana

重放浏览器请求多链路性能测试实践

FunTester

浏览器 性能测试 接口测试 全链路压测 FunTester

同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载

Java~~~

Java 架构 面试 分布式 微服务

Flink 在顺丰的应用实践

Apache Flink

大数据 flink

伴鱼:借助 Flink 完成机器学习特征系统的升级

Apache Flink

大数据 flink

铁山靠!阿里P9架构师写的这份JDK源码笔记,竟直接带火了GitHub

Java~~~

Java 源码 架构 jdk 面试

如何使用OkHttp实现websocket

Changing Lin

9月日更

搞懂 ArrayBuffer、TypedArray、DataView 的对比和使用

每天进步亿点点

9月日更

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

Java~~~

Java 架构 面试 微服务 Spring Boot

Apache Flink 在京东的实践与优化

Apache Flink

大数据 flink

数据结构是存储的基石

卢卡多多

数据结构 9月日更

私有化部署竟是企业对低代码选型的重要要素

低代码小观

企业 开发工具 云服务器 低代码平台 私有化部署

JDK11的11个谜题:Hanno Embregts在Devoxx UK阐述对Java认证的理解_编程语言_InfoQ精选文章