随笔分类 - Java新特性
Java各个版本更新的一些新特性学习
摘要:密封的类和接口 通过密封的类和接口来增强 Java 编程语言,这是新的预览特性,目的是用于限制超类的使用,密封的类和接口限制其它可能继承或实现它们的其它类或接口。 这个特性的目标包括——允许类或接口的开发者来控制哪些代码负责实现,提供了比限制使用超类的访问修饰符声明方式更多选择,并通过支持对模式的详
阅读全文
摘要:instanceof的模式匹配(预览) 这个特性很有意思,因为它为更为通用的模式匹配打开了大门。模式匹配通过更为简便的语法基于一定的条件来抽取对象的组件,而 instanceof 刚好是这种情况,它先检查对象类型,然后再调用对象的方法或访问对象的字段。 有了该功能,可以减少Java程序中显式强制转换
阅读全文
摘要:##switch表达式(预览) 在JDK 12中引入了Switch表达式作为预览特性。JDK 13提出了第二个switch表达式预览。JEP 354修改了这个特性, 它引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使yield, switch语句(不返回值)应该使用 b
阅读全文
摘要:##switch表达式(预览) ####传统switch的缺点 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行; 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复; 不能在一个case里写多个执行结果一致的条件; 整个switch不能作为表
阅读全文
摘要:Java 11包含一个全新的垃圾收集器--ZGC,它由Oracle开发,承诺在数TB的堆上具有非常低的暂停时间。 在本文中,我们将介绍开发新GC的动机,技术概述以及由ZGC开启的一些可能性。 那么为什么需要新GC呢?毕竟Java 10已经有四种发布多年的垃圾收集器,并且几乎都是无限可调的。 换个角度
阅读全文
摘要:##局部变量类型推断增强 Java11中可以在lambda表达式的形参中使用var,好处是可以在形参上加注解 ####使用示例 (@Deprecated var x, @Nullable var y)->x.process(y) ##API增强 ####不可修改集合API //Jdk 里面为集合(L
阅读全文
摘要:##局部变量的类型推断 这个功能减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺 ####使用举例 public static void main(String[] args) { // 使用var作为变量类型,通过右侧的泛型推断类型,在编译阶段自动将var转换为推断的类型 var l
阅读全文
摘要:##模块化技术 模块由通常的类和新的模块声明文件(module-info.java)组成。 该文件是位于 java 代码结构的顶层,该模块描述符明确地定义了我们的模块需要什么依赖关系,以及哪些模块被外部使用 ####设计目的 减少内存的开销 只须必要模块,而非全部jdk模块,可简化各种类库和大型应用
阅读全文